我在collectionview上有画外音问题.我有一个包含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但没有成功.
希望有人可以帮忙!
解决方法
使用VoiceOver遍历集合视图就像遍历可调整其特征属性的可访问元素.
集合视图的每个元素都是UIAccessibilityElement,必须在代码中重新定义.
为了理解应该如何实现,我建议你看一下WWDC 2018 – 提供一个特殊的可访问性体验视频,其内容完美地汇总为here,其示例可以是downloaded ……在此类编程之后将不会关注背景中的任何对象.