ios - VoiceOver 在 UITableView 中滚动,其中单元格和 subview 都是可访问性元素

标签 ios swift uitableview voiceover uiaccessibility

除了它的一些 subview 之外,我用来将整个 UIView 视为可访问元素的一般策略是使用 UIView 的 contentView 作为可访问元素来代替 UIView 本身。例如,

isAccessibilityElement = false
contentView.isAccessibilityElement = true
contentView.accessibilityLabel = "super view"
subview1.accessibilityLabel = "subview1"
subview2.accessibilityLabel = "subview2"
accessibilityElements = [contentView, subview1! subview2]
   

这在大多数情况下运行良好,但当 View 为 UITableViewCell 时会产生问题。基本上,如果 isAccessibilityElement = true 那么当 VoiceOver 用户在单元格中轻拂,并且屏幕上最低的可见单元格处于焦点时,tableView 将自动滚动到下一个单元格。但是如果单元格本身是一个无障碍元素,它就不能有同样是无障碍元素的 subview 。

另一方面,如果 isAccessibilityElement = false 自动滚动变得不稳定,通常焦点会从最低的可见单元格跳到 tableView 下方的滚动条或辅助功能元素。它似乎取决于屏幕尺寸,因为它会随着焦点在某些设备上的变化而自动滚动。

我尝试过以编程方式滚动 tableView 以响应单元格中的焦点变化,但这似乎也会导致不稳定的焦点跳跃。

有没有办法确保 VoiceOver 在 UITableView 中滚动干净,同时允许单元格和这些单元格的 subview 被视为可访问性元素?

最佳答案

在我确定我设置的 accessibilityElements 之一没有被隐藏之前,我遇到了这些问题并且更糟。该元素是最左边的项目(尽管作为信息按钮,我对元素进行了排序,以便它位于主单元格标题标签之后)。

不保证它会为其他任何人修复它,但绝对值得在没有隐藏任何可访问性项目的情况下进行测试。

关于ios - VoiceOver 在 UITableView 中滚动,其中单元格和 subview 都是可访问性元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62600499/

相关文章:

ios - 尝试将数据传递到容器 View ,而 segue 不起作用

ios - 如果用户点击 UITableViewsectionIndex 是否可以收到通知

swift - 使用自定义相机拍照 iOS 11.0 Swift 4.更新错误

swift - 如何删除 firebase 和 swift 3 中的单元格和数据

ios - TableViewController 中的透明部分

iOS:使用自定义 UITableViewCell 还是使用 Cell viewWithTag?

ios - 有谁知道为什么在 ios/cordova 中抛出这个异常?

ios - SWIFT:从 3 倒计时到 0 更改标签

ios - 快速为 tableView 部分和 tableView 单元格填充一个数组

iphone - UITableViewCell 中的 UIButton