跳到主要内容
Version: 0.85

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。(在 Android 上,“开发者选项”中的“过渡动画比例”设为“动画关闭”也会返回 true。)
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,把新播报排队到当前播报之后。

参数:

名称类型说明
announcement
Required
string要播报的字符串
options
Required
objectqueue - 是否排队到当前播报之后
iOS

getRecommendedTimeoutMillis()
Android
​

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

获取用户建议的超时时长(毫秒)。 该值来自“辅助功能”设置中的“执行操作所需时间(辅助功能超时)”。

参数:

名称类型说明
originalTimeout
Required
number当“辅助功能超时”未设置时返回的超时值(毫秒)。

isAccessibilityServiceEnabled()
Android
​

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

检查是否启用了任意无障碍服务。它不仅包含 TalkBack,也包括已安装的第三方无障碍应用。若只检查 TalkBack,请使用 isScreenReaderEnabled。 返回 Promise,解析为布尔值:有无障碍服务启用时为 true,否则为 false。

note

如果你只想检查 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 Deprecated 建议改用 sendAccessibilityEvent,并将 eventType 设为 focus。 :::

React TSX
static setAccessibilityFocus(reactTag: number);

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

在 Android 上,它会调用 UIManager.sendAccessibilityEvent,并传入 reactTag 与 UIManager.AccessibilityEventTypes.typeViewFocused。

note

确保希望接收无障碍焦点的 View 设置了 accessible={true}。


sendAccessibilityEvent()​

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

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

note

确保希望接收无障碍焦点的 View 设置了 accessible={true}。

名称类型说明
host
Required
HostInstance要向其发送事件的组件 ref。
eventType
Required
AccessibilityEventTypes'click'(仅 Android)、'focus'、'viewHoverEnter'(仅 Android)或 'windowStateChange'(仅 Android)之一