我正在尝试使我的应用程序更易于访问,到目前为止,标签和提示等标准可访问性内容正在创造奇迹。我遇到了一个问题,但动态更新了在UITableView中显示的内容。
表格的每一行每隔一秒左右更新一次,但是如果我此时尝试创建每个单元格的accessibilityLabel,那么我发现VoiceOver读取所选标签时出现问题,随着标签内容的变化不断中断自身所以系统只是从头开始再次读取标签内容(实际上奇怪的怪癖表明,有时候对于所选择的第一个单元格,语音有效,但是在选择一个新单元时,这个bug会返回)。
我试着看看是否还有尝试了解VoiceOver目前是否处于活动状态,但据我所知,VoiceOver完成时只会发布通知
UIAccessibilityAnnouncementDidFinishNotification
VoiceOver开始时没有相应的通知。所以我的TableViewController无法知道VoiceOver当前是否处于活动状态,并且它不应该更新任何accessibilityLabels。
我希望我至少可以使用
检测到我的一个TableView单元格是选定的accessibilityElementaccessibilityElementIsFocused
方法。但是在我的所有测试中,我都无法看到这种可靠的自定义UITableViewCell。
我也尝试为我的自定义单元格实现accessibilityLabel的getter,希望这可能有效,但遗憾的是会发生相同的行为。
我留下的唯一解决方案是用户可配置的频率,用于动态内容可访问性更新,比如5,10,20秒...这可以阻止我更新我的标签,直到我知道最后更改的内容肯定会有被读出来了。实际上,如果用户选择在最后一次更新后的8秒钟内选择一个小区,在2秒钟内选择一个10秒的限制并且标签将更新导致语音重新启动,那么即使这可能会被中断。
有没有人知道如何最好地处理这种动态更新内容?我假设tableview单元格稍微复杂一些,但总的来说我只是不明白苹果希望你如何处理动态内容。所有它需要解决的是另一个通知
UIAccessibilityAnnouncementDidStartNotification
或者更好的方法来询问VoiceOver当前是否处于活动状态。但我似乎找不到任何东西!
感谢您的时间,非常感谢有关此的任何提示。干杯!
答案 0 :(得分:2)
你想要做两件事。首先,您希望经常使用"更新"特征。这应该改善内容打开时应用程序的行为。
这应该有很多帮助。然后,您还需要为用户提供暂停更新内容的方法。无论您是否执行上述操作,这都是满足WCag 2.0准则2.2.2的绝对要求。