UITableView 中的画外音滚动,其中单元格和子视图都是辅助功能元素



我用来将整个UIView视为辅助功能元素以及某些子视图的一般策略是使用UIView的contentView作为辅助功能元素来代替UIView本身。 例如,

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

这在大多数情况下都运行良好,但是当视图是UITableViewCell时会产生问题。基本上,如果isAccessibilityElement = true,那么当 VoiceOver 用户在单元格中轻拂时,屏幕上最不可见的单元格处于焦点中,tableView 将自动滚动到下一个单元格。但是,如果单元格本身是辅助功能元素,则它不能具有子视图,子视图也是辅助功能元素。

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

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

是否有办法确保在 UITableView 中滚动干净的 VoiceOver,同时允许将这些单元格的单元格和子视图视为辅助功能元素?

我遇到了这些问题,甚至更糟,直到我确保我设置的辅助功能元素之一没有隐藏。该元素是最左边的项目(尽管作为信息按钮,我对元素进行了排序,使其位于主单元格标题标签之后(。

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

您可以设置tableViewCell.accessibilityElements = [view1, view2]

最新更新