我在集合视图上有画外音问题。我有一个包含5个单元格的全屏(减去导航栏)UICollectionView。每个单元格都包含isAccessibilityElement=true
的视图。
激活VoiceOver后,导航栏中的标题将被聚焦。如果我然后通过左/右滑动移动焦点,则每个单元格项目都是一个接一个地聚焦,就像人们期望的那样。问题是,如果我通过在屏幕上向下拖动手指来移动焦点。然后,当手指在任何单元格之外时,屏幕的背景(即集合视图的区域)接收焦点。
有没有办法将其关闭?
我试过了:
class MyViewController: UICollectionViewController {
override func viewDidLoad() {
super.viewDidLoad()
// A. This makes everything in the collection inaccessible, both
// background and cell content.
//collectionView?.accessibilityElementsHidden = true
// B. This has no effect
//collectionView?.isAccessibilityElement = false
}
...
我希望B可以工作,但它没有(没有任何反应)。我还尝试过各种其他的事情:self.view.isAccessibilityElement = false,self.view.superview.isAccessibilityElement = false但没有成功。
希望有人可以提供帮助!
答案 0 :(得分:0)
使用VoiceOver遍历集合视图就像遍历trait
属性为adjustable
的可访问元素。
集合视图的每个元素都是一个UIAccessibilityElement
,必须在您的代码中重新定义。
要了解应如何实施,建议您看一下WWDC 2018 - Deliver an exceptional accessibility experience
视频,其视频的内容得到了here的完美总结,并且呈现的示例可以为downloaded。这种编程不会在背景中聚焦任何对象。