跳到主要内容
版本:0.85

AccessibilityInfo

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

示例


参考

方法

addEventListener()

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

添加事件处理器。支持的事件:

Event nameDescription
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},
);

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

参数:

NameTypeDescription
announcement
Required
string要播报的字符串
options
Required
objectqueue - 将播报排在现有语音之后
iOS

getRecommendedTimeoutMillis()
Android

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

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

参数:

NameTypeDescription
originalTimeout
Required
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 上,这会使用传入的 reactTagUIManager.AccessibilityEventTypes.typeViewFocused 参数调用 UIManager.sendAccessibilityEvent 方法。

备注

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


sendAccessibilityEvent()

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

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

备注

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

NameTypeDescription
host
Required
HostInstance组件的 ref,用于将事件发送给它。
eventType
Required
AccessibilityEventTypes'click'(仅 Android)、'focus''viewHoverEnter'(仅 Android)或 'windowStateChange'(仅 Android)之一