如何使 UITableView 与大标题 VoiceOver 兼容?
Posted
技术标签:
【中文标题】如何使 UITableView 与大标题 VoiceOver 兼容?【英文标题】:How can I make a UITableView with big header VoiceOver compatible? 【发布时间】:2016-09-20 21:21:10 【问题描述】:我的应用程序有一个表格视图,其中有一个大的空白 tableHeaderView 允许将可见单元格完全滚动到窗口之外(到底部)。 所以 0,0 的 contentOffset 意味着内容被滚动出窗口。初始 contentOffset 为 0,height of tableView。
这一切都很好,但我在为其启用可访问性时遇到了一个难题。
用户逐步浏览元素,从导航栏及其栏按钮开始。只要她再次滑动以激活表格视图的第一个单元格,表格视图就会自动滚动到 0,0。但是,由于第一个单元格在此 contentOffset 处不可见,因此无法聚焦在它上面,而是将焦点保持在最后一个选定的元素上。
我可以以某种方式阻止这种情况或手动控制 VO 模式下的 contentOffset 吗?
我创建了一个demo project 来显示我的问题。
【问题讨论】:
您管理解决方案了吗?类似的问题,当表格视图之后的元素处于焦点时,表格视图中的单元格被向下拖动。只有打开画外音才会发生这种情况 【参考方案1】:如果空标头中没有可访问的内容,请考虑在加载时以编程方式设置内容偏移量,以防出现UIAccessibilityIsVoiceOverRunning()
。您还需要监控 UIAccessibilityVoiceOverStatusChanged
并执行相同操作。
【讨论】:
我确实在加载时设置了 contentOffset。但是,当 VoiceOver “选项卡”到表格视图时,系统会自动更改 contentOffset - 以错误的方式。我不知道有任何事件或钩子可以检测到 VO 切换到新元素,同样我也无法轻松区分正确的 VO 滚动事件和不正确的事件。 假设您可以使用UIAccessibilityFocus
非正式协议来检测转换。以上是关于如何使 UITableView 与大标题 VoiceOver 兼容?的主要内容,如果未能解决你的问题,请参考以下文章