跳至主要内容

AccessibilityInfo

有时,了解设备是否启用了屏幕阅读器非常有用。AccessibilityInfo API 就是为此目的而设计的。您可以使用它查询屏幕阅读器的当前状态,以及注册以在屏幕阅读器状态更改时收到通知。

示例


参考

方法

addEventListener()

static addEventListener(
eventName: AccessibilityChangeEventName | AccessibilityAnnouncementEventName,
handler: (
event: AccessibilityChangeEvent | AccessibilityAnnouncementFinishedEvent,
) => void,
): EmitterSubscription;

添加事件处理程序。支持的事件

事件名称描述
accessibilityServiceChanged
Android
当某些服务(例如 TalkBack、其他 Android 辅助功能以及第三方辅助功能服务)启用时触发。事件处理程序的参数为布尔值。当启用某些辅助功能服务时,布尔值为 true,否则为 false
announcementFinished
iOS
当屏幕阅读器完成播报时触发。事件处理程序的参数是一个包含以下键的字典
  • announcement:屏幕阅读器播报的字符串。
  • success:一个布尔值,指示播报是否成功。
boldTextChanged
iOS
当粗体文本切换状态更改时触发。事件处理程序的参数为布尔值。当启用粗体文本时,布尔值为 true,否则为 false
grayscaleChanged
iOS
当灰度切换状态更改时触发。事件处理程序的参数为布尔值。当启用灰度时,布尔值为 true,否则为 false
invertColorsChanged
iOS
当反色切换状态更改时触发。事件处理程序的参数为布尔值。当启用反色时,布尔值为 true,否则为 false
reduceMotionChanged当减少运动切换状态更改时触发。事件处理程序的参数为布尔值。当启用减少运动(或当“开发者选项”中的“转换动画缩放比例”为“动画关闭”)时,布尔值为 true,否则为 false
reduceTransparencyChanged
iOS
当减少透明度切换状态更改时触发。事件处理程序的参数为布尔值。当启用减少透明度时,布尔值为 true,否则为 false
screenReaderChanged当屏幕阅读器状态更改时触发。事件处理程序的参数为布尔值。当启用屏幕阅读器时,布尔值为 true,否则为 false

announceForAccessibility()

static announceForAccessibility(announcement: string);

发布一个要由屏幕阅读器播报的字符串。


announceForAccessibilityWithOptions()

static announceForAccessibilityWithOptions(
announcement: string,
options: options: {queue?: boolean},
);

发布一个要由屏幕阅读器播报的字符串,并带修改选项。默认情况下,播报会中断任何现有的语音,但在 iOS 上,可以通过在选项对象中将 queue 设置为 true 将其排在现有语音后面。

参数

名称类型描述
announcement
必需
字符串要播报的字符串
options
必需
对象queue - 将播报排在现有语音后面
iOS

getRecommendedTimeoutMillis()
Android

static getRecommendedTimeoutMillis(originalTimeout: number): Promise<number>;

获取用户需要的超时时间(以毫秒为单位)。此值在“辅助功能”设置的“操作超时时间(辅助功能超时时间)”中设置。

参数

名称类型描述
originalTimeout
必需
数字如果未设置“辅助功能超时时间”,则返回的超时时间。以毫秒为单位指定。

isAccessibilityServiceEnabled()
Android

static isAccessibilityServiceEnabled(): Promise<boolean>;

检查是否启用了任何辅助功能服务。这包括 TalkBack,还包括可能安装的任何第三方辅助功能应用。要仅检查 TalkBack 是否已启用,请使用 isScreenReaderEnabled。返回一个 Promise,该 Promise 解析为一个布尔值。当启用某些辅助功能服务时,结果为 true,否则为 false

注意:如果您只想检查 TalkBack 的状态,请使用 isScreenReaderEnabled


isBoldTextEnabled()
iOS

static isBoldTextEnabled(): Promise<boolean>:

查询当前是否启用了粗体文本。返回一个 Promise,该 Promise 解析为一个布尔值。当启用粗体文本时,结果为 true,否则为 false


isGrayscaleEnabled()
iOS

static isGrayscaleEnabled(): Promise<boolean>;

查询当前是否启用了灰度。返回一个 Promise,该 Promise 解析为一个布尔值。当启用灰度时,结果为 true,否则为 false


isInvertColorsEnabled()
iOS

static isInvertColorsEnabled(): Promise<boolean>;

查询当前是否启用了反色。返回一个 Promise,该 Promise 解析为一个布尔值。当启用反色时,结果为 true,否则为 false


isReduceMotionEnabled()

static isReduceMotionEnabled(): Promise<boolean>;

查询当前是否启用了减少运动。返回一个 Promise,该 Promise 解析为一个布尔值。当启用减少运动时,结果为 true,否则为 false


isReduceTransparencyEnabled()
iOS

static isReduceTransparencyEnabled(): Promise<boolean>;

查询当前是否启用了减少透明度。返回一个 Promise,该 Promise 解析为一个布尔值。当启用减少透明度时,结果为 true,否则为 false


isScreenReaderEnabled()

static isScreenReaderEnabled(): Promise<boolean>;

查询当前是否启用了屏幕阅读器。返回一个 Promise,该 Promise 解析为一个布尔值。当启用屏幕阅读器时,结果为 true,否则为 false


prefersCrossFadeTransitions()
iOS

static prefersCrossFadeTransitions(): Promise<boolean>;

查询当前是否启用了减少运动和首选交叉淡入淡出过渡设置。返回一个 Promise,该 Promise 解析为一个布尔值。当启用首选交叉淡入淡出过渡时,结果为 true,否则为 false


setAccessibilityFocus()

static setAccessibilityFocus(reactTag: number);

将辅助功能焦点设置为 React 组件。

在 Android 上,此方法使用传递的 reactTagUIManager.AccessibilityEventTypes.typeViewFocused 参数调用 UIManager.sendAccessibilityEvent 方法。

注意:确保您要接收辅助功能焦点的任何 View 都具有 accessible={true}