ios - 如何让 VoiceOver 将 UITableView 视为单个可访问性元素?

标签 ios uitableview voiceover

在一个特殊的用例中,我想要一个 UITableView成为单个可访问性元素,而不是将其单元格暴露给 VoiceOver 的容器.

我尝试设置它的isAccessibilityElementtrue并分配其accessibilityLabel但它没有用。

最佳答案

I want a UITableView to be a single accessibility element instead of a container exposing its cells to VoiceOver.



不幸的是,这是不可能的 .😨
您可以在没有警告的情况下对其进行编码,因为您处理的是非正式协议(protocol),但它不会被 VoiceOver 解释。 : 这是一团糟,因为你在 tableView 上做同样的事情就像一个简单的 label例如,但它在这里不起作用。
我没有技术证据,但我认为 tableView并不意味着是一个可访问的元素,只有它的单元格应该。🤔

I tried setting its isAccessibilityElement to true and assigning its accessibilityLabel but it didn't work [...] when I swipe left and right, VoiceOver goes through the cells and doesn't pronounce the table view's accessibilityLabel.



一个 UITableView可以被视为一个容器,其中嵌入了许多元素(它的单元格),并且,您不能同时拥有一个父 View (表格 View )和它的 subview (它的单元格)both accessible使用 VoiceOver:可以选择表格 View 或其单元格。

如果您不想在单元格中滑动,请在下面插入代码片段:
myTableViewInsideTheCell.accessibilityElementsHidden = true

然后,VoiceOver被告知不能解释 TableView 中的元素。
现在,由于表格 View 不能被视为可访问的元素,只需在表格 View 单元格中创建一个:
let a11yElt = UIAccessibilityElement(accessibilityContainer: myTableViewCell.contentView)
a11yElt.accessibilityFrameInContainerSpace = myTableViewInsideTheCell.frame
a11yElt.accessibilityTraits = .staticText
a11yElt.accessibilityLabel = "my table view inside the cell is now accessible."

myTableViewCell.accessibilityElements = [a11yElt]

该元素与单元格内的表格 View 重叠,并且可以被视为具有公共(public)属性的任何其他可访问元素。 👍

我认为有许多其他方法可以实现您的目标,但是按照这个原理,您可以 使 VoiceOver 将 UITableView 视为单个可访问性元素 .

您有指南,现在由您在您的环境中实现/调整它以实现您的目标。😉

关于ios - 如何让 VoiceOver 将 UITableView 视为单个可访问性元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60406769/

相关文章:

Swift - 代码不返回外部闭包的数组值

ios - 在 View 及其 subview 上启用 VoiceOver

ios - 如何创建不同于 View 边界的 accessibilityFrame?

ios - 画外音不关注下一个表单字段

javascript - 访问 Angular 生成的内容时,evaluateJavaScript() 无法获取稳定的内容?

ios - XIB 是否总是需要一个 View Controller ?

ios - 实例化图像以显示在屏幕上的几个不同点?

iphone - 以编程方式进行选择时,TableView 不会生成 didSelectRowAtIndexPath 事件吗?

ios - 如何使用 Swift - 在 textView 中自动完成

ios - 当文本字段在 uitableview 的单元格中时,不调用 touchesBegan