在我的应用程序(盲用户必须可以访问)中,我遇到了这种情况(语法练习)
当我在打开VoiceOver的设备上尝试该功能时,首先将其重点放在句子的第一部分上,因此在这种情况下,它读为“ Kesha”,而当我向右轻扫以阅读下一部分时,它将阅读第二部分。句子“因为……”。我要使它在阅读句子的第二部分之前也将焦点放在灰色框(即UIView
元素)上,以便用户知道该空白框在句子中的位置,但是我不知道该怎么做。
我已经尝试过grayBox.accessibilityLabel = "empty box"
或grayBox.accessibilityHint = "empty box"
,但是它只是没有将注意力集中在该视图上,所以它不会说话。我还尝试在框中插入一个空的UILabel
,但在按正确的顺序定位时遇到了一些问题,我认为这样做不是正确的方法。有什么建议吗?
答案 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元素时,请按以下顺序添加它们。
如果已通过“界面”构建器(Xib / Storyboard)添加了它们,请确保顺序在视图层次结构中是正确的。
如果失败,您可以尝试覆盖方法“ accessibilityElements”并以您希望它们读出的顺序返回标签和灰色视图的数组。