尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

别忽视无障碍:react-native-segmented-control-tab accessible与accessibilityLabels属性完整指南

别忽视无障碍:react-native-segmented-control-tab accessible与accessibilityLabels属性完整指南 别忽视无障碍react-native-segmented-control-tab accessible与accessibilityLabels属性完整指南【免费下载链接】react-native-segmented-control-tabreact-native-segmented-control-tab(for Android/iOS)项目地址: https://gitcode.com/gh_mirrors/re/react-native-segmented-control-tabreact-native-segmented-control-tab 是一款同时支持 Android 与 iOS 的 React Native 分段选择控件Segmented Control组件本文带你完整掌握它常被新手忽略的两个无障碍属性——accessible与accessibilityLabels让视障用户的读屏软件也能读懂你的标签页。为什么分段控件需要关注无障碍对于依赖读屏软件的用户iOS 的 VoiceOver、Android 的 TalkBack来说屏幕上的一切都必须可被朗读。如果分段控件没有提供无障碍信息读屏用户根本不知道One / Two / Three是可以切换的标签。这个组件的无障碍能力由两个属性决定属性类型默认值作用accessiblebooleantrue开关标签是否参与无障碍系统accessibilityLabelsstring[]空数组自定义每个标签的朗读文本上图来自示例工程Sample/SegmentedView.js展示了单选、多选、带角标等场景这些标签在默认配置下都已对读屏用户开放。accessible 属性一个开关决定读屏能否看见标签每个标签最终都由TouchableOpacity组件渲染accessible属性被直接透传到它身上见src/TabOption.js第 141 行。保持默认true读屏软件会把标签识别为可交互元素用户可以逐个焦点切换并按下标签显式设为false该标签在无障碍层级中整体被跳过只适合装饰性场景组件在src/SegmentedControlTab.js第 96 行就将默认值写为accessible: true也就是说开箱即用无需额外配置。⚠️ 只有当你确实想让读屏忽略整组标签时才应关闭它。accessibilityLabels 属性自定义每个标签的朗读文本当标签文字不适合朗读时比如图标、缩写、超长英文可以用accessibilityLabels传入一组与values等长的字符串让读屏读出更友好的说法SegmentedControlTab values{[, , ]} accessibilityLabels{[首页, 搜索, 个人中心]} selectedIndex{selectedIndex} onTabPress{this.handleIndexChange} /它的回退规则写得很清晰src/SegmentedControlTab.js第 71–78 行的getAccessibilityLabelByIndex函数会按索引查找对应文案找不到就回退使用标签自身的values文本。所以你只给部分标签配置文案也完全没问题。源码解析无障碍信息如何层层传递整条链路非常简洁值得花两分钟看懂类型定义index.d.ts第 46–49 行声明了accessible?: boolean与accessibilityLabels?: ArraystringIDE 会自动补全逐标签取值src/SegmentedControlTab.js第 175 行按索引取出每个标签的文案再在第 220–221 行作为accessible和accessibilityLabel传给子组件落到视图src/TabOption.js第 143–145 行不仅设置朗读文本还额外配置了accessibilityTraits选中的标签报为selected未选中报为button——读屏用户能直接听出当前在哪一页accessibilityComponentTypebutton声明它是可点击的按钮iOS 端同样生效开启 VoiceOver 后逐标签滑动能清晰听到按钮 / 已选择的状态差异。快速上手3 步配置并验证无障碍第 1 步确认accessible未被意外关闭默认即为true一般无需改动若之前项目里写过accessible{false}记得移除。第 2 步为难读的标签补充accessibilityLabels按values的顺序一一对应传入文案数组图标类标签务必配置。第 3 步真机验证iOS设置 → 辅助功能 → VoiceOverAndroid设置 → 辅助功能 → TalkBack开启后手指逐格扫过分段控件应能听到每个标签的自定义文案与选中状态。 相关 Props 完整说明可查阅README.md的 Props 表格第 92–93 行快照测试src/__tests__/__snapshots__/SegmentedControlTab.js.snap中也保留了accessible{true}的默认行为佐证。常见问题 FAQQaccessible和allowFontScaling有什么区别accessible控制读屏识别allowFontScaling只控制文字是否随系统字号缩放两者互不影响。Q多选模式multiple下accessibilityLabels还能用吗可以。无论单选还是多选每个标签都按索引独立取文案规则一致。Q忘记传accessibilityLabels会报错吗不会。取不到值时自动回退为标签自身文本属于锦上添花型属性。小结accessible决定能不能被读屏发现accessibilityLabels决定被读出来叫什么。两个属性一行代码的事却能显著提升 App 对所有用户友好程度——别忽视它。✅【免费下载链接】react-native-segmented-control-tabreact-native-segmented-control-tab(for Android/iOS)项目地址: https://gitcode.com/gh_mirrors/re/react-native-segmented-control-tab创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表