跳到主要内容

AccessibilityInfo

有时了解设备是否启用了屏幕阅读器非常有用。AccessibilityInfo API 正是为此而设计的。你可以使用它来查询屏幕阅读器的当前状态,以及注册监听屏幕阅读器状态变化的通知。

示例


参考

方法

addEventListener()

React TSX
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()

React TSX
static announceForAccessibility(announcement: string);

发送一个字符串,供屏幕阅读器朗读。


announceForAccessibilityWithOptions()

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

发送一个字符串,供屏幕阅读器通过修改选项进行朗读。默认情况下,公告会中断任何现有的语音,但在 iOS 上,可以通过在选项对象中将 queue 设置为 true,将其排在现有语音之后。

参数

姓名类型描述
公告
必需
字符串要朗读的字符串
选项
必需
对象queue - 将公告排在现有语音之后
iOS

getRecommendedTimeoutMillis()
Android

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

获取用户所需的毫秒超时时间。此值在“辅助功能”设置中的“执行操作的时间限制(辅助功能超时)”中设置。

参数

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

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()

:::warning 已弃用:建议改用带有 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}

姓名类型描述
host
必需
HostInstance要发送事件的组件 ref。
eventType
必需
AccessibilityEventTypes可选值:'click'(仅限 Android)、'focus''viewHoverEnter'(仅限 Android)或 'windowStateChange'(仅限 Android)