跳到主要内容
版本:0.86

AccessibilityInfo

有时了解设备当前是否启用了屏幕阅读器会很有用。AccessibilityInfo API 就是为此目的而设计的。你可以用它来查询屏幕阅读器的当前状态,也可以注册监听,以便在屏幕阅读器状态发生变化时收到通知。

示例​


参考

方法​

addEventListener()​

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

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

事件名称描述
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()​

React TSX
static announceForAccessibility(announcement: string);

发布一段字符串供屏幕阅读器播报。


announceForAccessibilityWithOptions()​

React TSX
static announceForAccessibilityWithOptions(
announcement: string,
options: {
queue?: boolean;
priority?: 'low' | 'default' | 'high';
},
);

发送一个字符串供屏幕阅读器播报,并可设置选项。默认情况下,播报会中断现有语音;在 iOS 上,可在选项对象中将 queue 设为 true,使播报排在现有语音之后。iOS 上还可以指定可选的 priority。

参数:

名称类型描述
announcement
必需
string要播报的字符串
options
必需
object包含以下键的选项对象:
  • queue: 将播报排在现有语音之后。
    iOS
  • priority: 播报优先级('low'、'default' 或 'high')。高优先级播报会中断正在进行的语音,且不会被打断。默认优先级播报会中断正在进行的语音,但也可以被打断。低优先级播报不会中断正在进行的语音,并且可以被打断。
    iOS

getRecommendedTimeoutMillis()
Android
​

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

获取用户需要的毫秒级超时时间。 此值设置在“无障碍”设置中的“操作超时(无障碍超时)”里。

参数:

名称类型描述
originalTimeout
必需
number如果未设置“无障碍超时”,则返回的超时时间。以毫秒为单位。

isAccessibilityServiceEnabled()
Android
​

React TSX
static isAccessibilityServiceEnabled(): Promise<boolean>;

检查是否启用了任何无障碍服务。这包括 TalkBack 以及可能安装的任何第三方无障碍应用。若只想检查 TalkBack 是否已启用,请使用 isScreenReaderEnabled。返回一个解析为布尔值的 promise。当某个无障碍服务已启用时,结果为 true,否则为 false。

备注

如果你只想检查 TalkBack 的状态,请使用 isScreenReaderEnabled。


isBoldTextEnabled()
iOS
​

React TSX
static isBoldTextEnabled(): Promise<boolean>:

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


isGrayscaleEnabled()
iOS
​

React TSX
static isGrayscaleEnabled(): Promise<boolean>;

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


isInvertColorsEnabled()
iOS
​

React TSX
static isInvertColorsEnabled(): Promise<boolean>;

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


isReduceMotionEnabled()​

React TSX
static isReduceMotionEnabled(): Promise<boolean>;

查询当前是否启用了减少动态效果。返回一个解析为布尔值的 promise。当减少动态效果已启用时,结果为 true,否则为 false。


isReduceTransparencyEnabled()
iOS
​

React TSX
static isReduceTransparencyEnabled(): Promise<boolean>;

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


isScreenReaderEnabled()​

React TSX
static isScreenReaderEnabled(): Promise<boolean>;

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


isHighTextContrastEnabled()
Android
​

React TSX
static isHighTextContrastEnabled(): Promise<boolean>

查询当前是否启用了高文本对比度。返回一个解析为布尔值的 promise。当高文本对比度已启用时,结果为 true,否则为 false。


isDarkerSystemColorsEnabled()
iOS
​

React TSX
static isDarkerSystemColorsEnabled(): Promise<boolean>

查询当前是否启用了较深的系统颜色。返回一个解析为布尔值的 promise。当较深的系统颜色已启用时,结果为 true,否则为 false。


prefersCrossFadeTransitions()
iOS
​

React TSX
static prefersCrossFadeTransitions(): Promise<boolean>;

查询当前是否启用了减少动态效果和交叉淡入淡出过渡偏好设置。返回一个解析为布尔值的 promise。当偏好交叉淡入淡出过渡已启用时,结果为 true,否则为 false。


🗑️ setAccessibilityFocus()​

Deprecated

建议改用带有 focus 事件类型的 sendAccessibilityEvent。

React TSX
static setAccessibilityFocus(reactTag: number);

将无障碍焦点设置到一个 React 组件。

在 Android 上,这会使用传入的 reactTag 和 UIManager.AccessibilityEventTypes.typeViewFocused 参数调用 UIManager.sendAccessibilityEvent 方法。

备注

请确保你希望接收无障碍焦点的任何 View 都已设置 accessible={true}。


sendAccessibilityEvent()​

React TSX
static sendAccessibilityEvent(host: HostInstance, eventType: AccessibilityEventTypes);

以命令式方式在 React 组件上触发无障碍事件,例如为屏幕阅读器更改当前聚焦元素。

备注

请确保你希望接收无障碍焦点的任何 View 都已设置 accessible={true}。

名称类型描述
host
必需
HostInstance要发送事件到的组件 ref。
eventType
必需
AccessibilityEventTypes'click'(仅 Android)、'focus'、'viewHoverEnter'(仅 Android)或 'windowStateChange'(仅 Android)之一