首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式移动辅助功能焦点

以编程方式移动辅助功能焦点
EN

Stack Overflow用户
提问于 2019-07-30 13:44:59
回答 2查看 3.5K关注 0票数 13

当按下按钮时,是否可以将可访问性焦点(用于VoiceOver的iOS和用于Android的Talkback )移动到定义的小部件上?

我尝试过在语义包中搜索,但是我找不到获得这个信息的方法。

这也足以让屏幕阅读器从一开始就重新启动语义树。

我有一个PageView,它有3个页面和按钮,可以使用PageController向后/向前移动。当使用按钮(调用_pageController.animateToPage)进行更改时,我想将焦点移到页面的开头。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-17 21:18:33

总之,没有任何方法允许您通过代码移动可访问性焦点。

引用https://stackoverflow.com/a/28481095/6668797的免责声明作为背景(尽管Android仍然允许我们这样做。)

免责声明:强迫将注意力集中在任何地方,但在顶部栏总是(好的,永远不应该说),但真的,只是不要这么做。这违反了各种WCAG2.0规则,包括3.2.1和3.2.3,分别涉及可预测的导航和上下文更改。实际上,这样做可能会使您的应用程序更加不可访问。 http://www.w3.org/TR/WCAG20/#consistent-behavior

目前,Dart团队坚定地支持这一规则,因此添加这个特性并不是当务之急。

如果您确实希望通知用户一个不同的页面现在是可见的,您可以使用SemanticsService.announce()在执行某些操作后通知用户。例如,在onPageChanged中设置它,

代码语言:javascript
复制
onPageChanged: (int page) {
  // announce new page
}
票数 4
EN

Stack Overflow用户

发布于 2020-01-17 17:40:06

目前还没有办法在颤栗中做到这一点。输入焦点和可访问性焦点是两件不同的事情。很多人似乎认为:

代码语言:javascript
复制
FocusScope.of(context).requestFocus(_myFocusNode);

问题是,这只会改变输入焦点。可访问性焦点,即TalkBack和Voiceover提供的绿色/蓝色/黑匣子,不会改变。

这就是为什么您可以使用print语句来验证焦点,但是框没有移动。

到目前为止,还没有办法在颤振中改变可访问性焦点。这是一个巨大的疏忽,也是创建真正可访问的应用程序的巨大障碍。

为了完整起见,编辑了,我确实找到了一个解决这个问题的丑陋方法。

如果将焦点更改为表单字段(如textfield ),则辅助功能焦点也将更新。

在我的例子中,我使用的是一个几乎没有样式附加的FlatButton。很明显,你必须让那个按钮做点什么,但它至少能让你在你想要的地方附近。

哈奇?当然,但我现在没有更好的选择,这就是我现在所拥有的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57273232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档