跳到主要内容
新架构实战课 实操 + 基建 + 原理全维度包揽,抢先掌握 React Native 新架构精髓 立即查看 >Version: Next

AccessibilityInfo

有时候我们希望知道用户的设备是否正在运行读屏应用。AccessibilityInfo正是用于此目的。你可以用它来查询读屏应用的当前状态,并且可以监听其状态变化。

示例


文档

方法

addEventListener()

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

static announceForAccessibility(announcement: string);

发送一个字符串给读屏应用朗读。


announceForAccessibilityWithOptions()

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

发送一个字符串,以便屏幕阅读器进行修改。默认情况下,公告将中断任何现有的语音,但在 iOS 上,可以通过在选项对象中设置 queuetrue 来排队到现有的语音后面。

参数:

名称类型描述
announcement
Required
string要发送的字符串
options
Required
objectqueue - 在正在进行的语音后面排队发布
iOS

getRecommendedTimeoutMillis()
Android

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

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

参数:

名称类型描述
originalTimeout
Required
number如果未设置“辅助功能超时”,则返回的超时时间。以毫秒为单位指定。

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。当减少动画被启用时,结果为 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}属性。