辅助功能:专注于视图

时间:2019-11-04 20:41:08

标签: ios swift view focus accessibility

在我的应用程序(盲用户必须可以访问)中,我遇到了这种情况(语法练习)

enter image description here

当我在打开VoiceOver的设备上尝试该功能时,首先将其重点放在句子的第一部分上,因此在这种情况下,它读为“ Kesha”,而当我向右轻扫以阅读下一部分时,它将阅读第二部分。句子“因为……”。我要使它在阅读句子的第二部分之前也将焦点放在灰色框(即UIView元素)上,以便用户知道该空白框在句子中的位置,但是我不知道该怎么做。

我已经尝试过grayBox.accessibilityLabel = "empty box"grayBox.accessibilityHint = "empty box",但是它只是没有将注意力集中在该视图上,所以它不会说话。我还尝试在框中插入一个空的UILabel,但在按正确的顺序定位时遇到了一些问题,我认为这样做不是正确的方法。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

UIView上要“获得焦点”,您只需要启用可访问性或将其标记为可访问元素,例如:

myGreyView.isAccessibilityElement = true
myGreyView.accessibilityLabel = "A grey box"
myGreyView.accessibilityHint = "this is a secretive box. I don't know what it does"

您还可以在xcode界面构建器的UIView属性中的一个方框中打勾,我认为它叫做“ Accessibility Enabled”。还可以用来设置标签和提示。

有关更多信息,请参见此Apple guide to VoiceOver

答案 1 :(得分:0)

关于元素的读取顺序。第一部分和第二部分是不同的UILabel还是一个标签?

您是在代码中还是在Xib / Storyboard中添加这些内容?根据它们作为子视图添加的顺序,可以影响VoiceOver读出项目的顺序。

添加3x UI元素时,请按以下顺序添加它们。

  1. UILabel-“ Kesha”
  2. UIView-灰色框,“灰色框”
  3. UILabel-“因为不公平,所以签订合同。”

如果已通过“界面”构建器(Xib / Storyboard)添加了它们,请确保顺序在视图层次结构中是正确的。

如果失败,您可以尝试覆盖方法“ accessibilityElements”并以您希望它们读出的顺序返回标签和灰色视图的数组。