AccessibilityInfo
有时了解设备是否当前激活了屏幕阅读器是很有用的。AccessibilityInfo API 就是为此目的设计的。您可以使用它来查询屏幕阅读器的当前状态,以及注册通知以便在屏幕阅读器状态更改时收到通知。
示例
参考
方法
addEventListener()
static addEventListener(
eventName: AccessibilityChangeEventName | AccessibilityAnnouncementEventName,
handler: (
event: AccessibilityChangeEvent | AccessibilityAnnouncementFinishedEvent,
) => void,
): EmitterSubscription;
添加一个事件处理器。支持的事件:
| 事件名称 | 描述 |
|---|---|
accessibilityServiceChangedAndroid | 当某些服务(如 TalkBack、其他 Android 辅助技术和第三方无障碍服务)启用时触发。事件处理器的参数是一个布尔值。当启用了某些无障碍服务时布尔值为 true,否则为 false。 |
announcementFinishediOS | 当屏幕阅读器完成宣布时触发。事件处理器的参数是一个包含以下键的对象:
|
boldTextChangediOS | 当粗体文本切换的状态更改时触发。事件处理器的参数是一个布尔值。当启用了粗体文本时布尔值为 true,否则为 false。 |
grayscaleChangediOS | 当灰度切换的状态更改时触发。事件处理器的参数是一个布尔值。当启用了灰度时布尔值为 true,否则为 false。 |
invertColorsChangediOS | 当颜色反转切换的状态更改时触发。事件处理器的参数是一个布尔值。当启用了颜色反转时布尔值为 true,否则为 false。 |
reduceMotionChanged | 当减少运动切换的状态更改时触发。事件处理器的参数是一个布尔值。当启用了减少运动(或当“开发者选项”中的“过渡动画缩放”为“动画关闭”)时布尔值为 true,否则为 false。 |
reduceTransparencyChangediOS | 当减少透明度切换的状态更改时触发。事件处理器的参数是一个布尔值。当启用了减少透明度时布尔值为 true,否则为 false。 |
screenReaderChanged | 当屏幕阅读器的状态更改时触发。事件处理器的参数是一个布尔值。当启用了屏幕阅读器时布尔值为 true,否则为 false。 |
announceForAccessibility()
static announceForAccessibility(announcement: string);
发送一个字符串以供屏幕阅读器宣布。
announceForAccessibilityWithOptions()
static announceForAccessibilityWithOptions(
announcement: string,
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。当启用了某些无障碍服务时结果为 true,否则为 false。
注意:如果您只想检查 TalkBack 的状态,请使用 isScreenReaderEnabled。
isBoldTextEnabled() iOS
static isBoldTextEnabled(): Promise<boolean>:
查询当前是否启用了粗体文本。返回一个解析为布尔值的 Promise。当启用了粗体文本时结果为 true,否则为 false。
isGrayscaleEnabled() iOS
static isGrayscaleEnabled(): Promise<boolean>;
查询当前是否启用了灰度。返回一个解析为布尔值的 Promise。当启用了灰度时结果为 true,否则为 false。
isInvertColorsEnabled() iOS
static isInvertColorsEnabled(): Promise<boolean>;
查询当前是否启用了颜色反转。返回一个解析为布尔值的 Promise。当启用了颜色反转时结果为 true,否则为 false。
isReduceMotionEnabled()
static isReduceMotionEnabled(): Promise<boolean>;
查询当前是否启用了减少运动。返回一个解析为布尔值的 Promise。当启用了减少运动时结果为 true,否则为 false。
isReduceTransparencyEnabled() iOS
static isReduceTransparencyEnabled(): Promise<boolean>;
查询当前是否启用了减少透明度。返回一个解析为布尔值的 Promise。当启用了减少透明度时结果为 true,否则为 false。
isScreenReaderEnabled()
static isScreenReaderEnabled(): Promise<boolean>;
查询当前是否启用了屏幕阅读器。返回一个解析为布尔值的 Promise。当启用了屏幕阅读器时结果为 true,否则为 false。
isHighTextContrastEnabled() Android
static isHighTextContrastEnabled(): Promise<boolean>
查询当前是否启用了高文本对比度。返回一个解析为布尔值的 Promise。当启用了高文本对比度时结果为 true,否则为 false。
isDarkerSystemColorsEnabled() iOS
static isDarkerSystemColorsEnabled(): Promise<boolean>
查询当前是否启用了深色系统颜色。返回一个解析为布尔值的 Promise。当启用了深色系统颜色时结果为 true,否则为 false。
prefersCrossFadeTransitions() iOS
static prefersCrossFadeTransitions(): Promise<boolean>;
查询当前是否启用了减少运动和偏好交叉淡入淡出过渡设置。返回一个解析为布尔值的 Promise。当启用了偏好交叉淡入淡出过渡时结果为 true,否则为 false。
setAccessibilityFocus()
建议改用 sendAccessibilityEvent 并将 eventType 设为 focus。
static setAccessibilityFocus(reactTag: number);
将无障碍焦点设置到 React 组件。
在 Android 上,这会调用 UIManager.sendAccessibilityEvent 方法,并传入 reactTag 和 UIManager.AccessibilityEventTypes.typeViewFocused 参数。
确保任何想要接收无障碍焦点的 View 都有 accessible={true}。
sendAccessibilityEvent()
static sendAccessibilityEvent(host: HostInstance, eventType: AccessibilityEventTypes);
命令式地在 React 组件上触发无障碍事件,例如更改屏幕阅读器的聚焦元素。
确保任何想要接收无障碍焦点的 View 都有 accessible={true}。
| 名称 | 类型 | 描述 |
|---|---|---|
| host 必需 | HostInstance | 发送事件到的组件 ref。 |
| eventType 必需 | AccessibilityEventTypes | 其中之一:'click'(仅 Android)、'focus'、'viewHoverEnter'(仅 Android)或 'windowStateChange'(仅 Android) |