我正在尝试在RN中使用可访问性功能,但没有什么问题。在不禁用TalkBack的情况下,我该如何去除UI中的绿框。第二个问题是,如何强制执行屏幕阅读器读取由几个组件组成的视图元素的顺序?目前,我根据某些参数操作状态,并将其传递给属性:accessibilityLabel、accessibility Hint、important ForAccessibility。有更好的方法吗?这里有一个例子:
this.setState(function(){
if(<some condition>){
return{
accessibilityLabel: "press right to move to other item",
importantForAccessibility: "yes"
}
}else{
return {
accessibilityLabel: "something else",
importantForAccessibility: "no-hide-descendants"
}
}
)}
然后
render(){
return(
<View
accessibilityLabel=
{this.state.accessibilityLabel}
importantForAccessibility=
{this.state.importantForAccessibility}
/>
)
}
如何在不禁用TalkBack的情况下清除UI中的绿框。
绿框是Talkback的一部分。这是一个重要的功能,它可以清楚地显示屏幕阅读器的光标在哪里;适用于各种残疾,包括部分视力、阅读障碍、记忆障碍和注意力困难。
作为一名用户,据我所知,它无法关闭。(我有安卓8.0上的安卓辅助功能套件7.2版)。不过,其他平台上的一些屏幕阅读器提供了用户偏好来定制外观。
作为一名开发人员,你也不能关闭它——它是Talkback的一部分,而不是应用程序。这是一件好事;这是用户的辅助技术,而不是开发人员的。即使开发人员可以关闭屏幕阅读器的视觉光标,他们也不应该。(这就像用* { cursor: none !important; }
设计网页一样——鼠标用户不会为此感谢你!)
如何强制屏幕阅读器读取由多个组件组成的视图元素的顺序?
使用web浏览器时,屏幕阅读器按DOM顺序读取网页,因此适用于网页的一般原则是使视觉顺序与DOM顺序匹配。(此外:这对有视力的键盘用户来说也很重要,因为与视觉顺序不同的选项卡顺序可能会非常令人困惑。)
我对React原生应用程序不太熟悉,但我想也会有类似的应用程序。您应该以有意义的顺序构建应用程序的内容和控件。如果应用程序有几个区域,请以允许用户跳到特定区域的方式标记这些区域(使用标题、ARIA地标角色或可能的其他分组容器)。请注意,屏幕阅读器用户不一定是盲人,因此关于视觉顺序和DOM顺序的要点很重要。
值得澄清的是,您的意思是否是强制执行整个应用程序的"阅读顺序"(例如,当用户浏览应用程序UI只是为了查看其中的内容时);而不是在特定的小部件(如日期选择器)内响应特定的用户操作来管理焦点。由于React native使用JS,我建议阅读ARIA-管理焦点,看看这是否适用于您的情况。