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 来将其排在现有语音之后。
参数
| 姓名 | 类型 | 描述 |
|---|---|---|
| 公告 必需 | 字符串 | 要播报的字符串 |
| 选项 必需 | 对象 | 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。
prefersCrossFadeTransitions() iOS
static prefersCrossFadeTransitions(): Promise<boolean>;
查询减小动画和优先交叉淡入淡出转换设置当前是否启用。返回一个解析为布尔值的 Promise。启用优先交叉淡入淡出转换时,结果为 true,否则为 false。
setAccessibilityFocus()
static setAccessibilityFocus(reactTag: number);
将辅助功能焦点设置到 React 组件。
在 Android 上,这会调用 UIManager.sendAccessibilityEvent 方法,并传递 reactTag 和 UIManager.AccessibilityEventTypes.typeViewFocused 参数。
确保任何您希望接收辅助功能焦点的 View 都具有 accessible={true}。