【发布时间】:2015-11-17 16:24:05
【问题描述】:
我有一个UITableView,它显示一个项目列表,其子类为UITableViewCell。在那个单元格中,我有一个 UILabels 的层次结构和子视图,如下所示:
UITableViewCell subclass
- UILabel a
- UILabel b
- UILabel c
- UIView subclass 1
- UILabel 1a
- UILabel 1b
- UIView subclass 2
- UILabel 2a
- UILabel 2b
我希望 VoiceOver 按此处显示的顺序阅读所有标签。我应该在这里注意,在视觉上,UIView 子类中的标签是相反的顺序(例如,UILabel 1b 在UILabel 1a 之上)。
某些标签需要将“accessibilityLabel”属性设置为某个自定义字符串。它是在UITableViewCell 的配置中完成的,一旦知道文本,直接标记或子视图。我还将shouldGroupAccessibilityChildren 属性设置为YES。
现在,我的行为是:VoiceOver 读取顶级 UILabel(示例中为 a、b 和 c)。然后,如果我滑动以获取下一个元素,它将读取 UIView 子类 1,然后是 2,等等。在读取这些子类时,读取顺序很好(UILabel1a,然后是 1b,等等)。
我能做到这一点吗?还是用户绝对需要滑动?
【问题讨论】:
-
不是 100% 清楚您想要确切更改的内容,但您是否考虑过使用
accessibilityElements,或禁用包含标签的可访问性并在容器上设置标签? -
现在,用户必须滑动 3 次才能听到一个单元格的所有信息(一个用于顶级标签,一个用于每个
UIView子类)。我希望在第一次滑动时说出所有信息。在我的测试中,设置accessibilityElements会使 VoiceOver 一次只说出一个信息(因此在我的示例中用户必须滑动 7 次)。我希望这可以使问题更加清晰!
标签: ios uiview accessibility voiceover uiaccessibility