进阶 reactnative.dev 2026-10-11 06:04:21 · 35 阅读

第2章 React Native AccessibilityInfo 模块详解:屏幕阅读器状态监听与无障碍交互

版本:0.77 AccessibilityInfo 有时需要知道当前设备是否有正在运行的屏幕阅读器,AccessibilityInfo API 正是为此设计的。你可以用它来查询屏幕阅读器的当前状态,也可以注册回调以在屏幕阅读器状态发生变化时接收通知。 示例 参考 方法 addEventListener() React TSX static addEventListener( eventName: AccessibilityChangeEventName | AccessibilityAnnouncementEventName, handler: ( event: AccessibilityChangeEvent | AccessibilityAnnouncementFinishedEvent, ) => void, ): EventSubscription; 添加事件监听器。支持的事件如下: 事件名称 | 描述 --- | --- 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 上,可在 options 对象中将 queue 设为 true,使新朗读排队在现有语音之后。 参数: 名称 类型 描述 announcement 必需 string 需要朗读的字符串 options 必需 object queue - 将朗读请求排队在现有语音之后 iOS getRecommendedTimeoutMillis() Android React TSX static getRecommendedTimeoutMillis(originalTimeout: number): Promise; 获取用户所需的超时时间(毫秒)。 该值在"无障碍功能"设置中的"响应时间(无障碍超时)"中设定。 参数: 名称 类型 描述 originalTimeout 必需 number 若未设置"无障碍超时",则返回此超时值。以毫秒为单位。 isAccessibilityServiceEnabled() Android React TSX static isAccessibilityServiceEnabled(): Promise; 检查是否启用了任何无障碍服务。这包括 TalkBack 以及任何可能已安装的第三方无障碍应用。若仅检查 TalkBack 是否启用,请使用 isScreenReaderEnabled。返回一个 Promise,解析为布尔值。当启用了某些无障碍服务时结果为 true,否则为 false。 注意:若仅需检查 TalkBack 的状态,请使用 isScreenReaderEnabled。 isBoldTextEnabled() iOS React TSX static isBoldTextEnabled(): Promise; 查询当前是否启用了粗体文本。返回一个 Promise,解析为布尔值。当粗体文本启用时结果为 true,否则为 false。 isGrayscaleEnabled() iOS React TSX static isGrayscaleEnabled(): Promise; 查询当前是否开启了灰度模式。返回一个 Promise,解析为布尔值:开启时为 true,否则为 false。 isInvertColorsEnabled() iOS​ React TSXstatic isInvertColorsEnabled(): Promise;
查询当前是否开启了反转颜色。返回一个 Promise,解析为布尔值:开启时为 true,否则为 false。 isReduceMotionEnabled()​ React TSXstatic isReduceMotionEnabled(): Promise;
查询当前是否开启了减弱动态效果。返回一个 Promise,解析为布尔值:开启时为 true,否则为 false。 isReduceTransparencyEnabled() iOS​ React TSXstatic isReduceTransparencyEnabled(): Promise;
查询当前是否开启了降低透明度。返回一个 Promise,解析为布尔值:开启时为 true,否则为 false。 isScreenReaderEnabled()​ React TSXstatic isScreenReaderEnabled(): Promise;
查询当前是否开启了屏幕阅读器。返回一个 Promise,解析为布尔值:开启时为 true,否则为 false。 isHighTextContrastEnabled() Android​ React TSXstatic isHighTextContrastEnabled(): Promise
查询当前是否开启了高文本对比度。返回一个 Promise,解析为布尔值:开启时为 true,否则为 false。 isDarkerSystemColorsEnabled() iOS​ React TSXstatic isDarkerSystemColorsEnabled(): Promise
查询当前是否开启了更深的系统颜色。返回一个 Promise,解析为布尔值:开启时为 true,否则为 false。 prefersCrossFadeTransitions() iOS​ React TSXstatic prefersCrossFadeTransitions(): Promise;
查询当前是否开启了减弱动态效果和偏好交叉淡入过渡。返回一个 Promise,解析为布尔值:开启偏好交叉淡入过渡时为 true,否则为 false。 setAccessibilityFocus()​ 已弃用建议改用 sendAccessibilityEvent 并将 eventType 设为 focus。 React TSXstatic setAccessibilityFocus(reactTag: number);
将可访问焦点设置到 React 组件。 在 Android 平台上,此操作调用 UIManager.sendAccessibilityEvent 方法,传入 reactTag 以及 UIManager.AccessibilityEventTypes.typeViewFocused 作为参数。 注意:确保希望接收可访问焦点的 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)。

评论 (0)