背景VoiceOveraccessibility专注于UICollectionView

时间:2017-09-01 10:58:50

标签: ios swift uicollectionview accessibility voiceover

我在集合视图上有画外音问题。我有一个包含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但没有成功。

希望有人可以提供帮助!

1 个答案:

答案 0 :(得分:0)

使用VoiceOver遍历集合视图就像遍历trait属性为adjustable的可访问元素。

集合视图的每个元素都是一个UIAccessibilityElement,必须在您的代码中重新定义。

要了解应如何实施,建议您看一下WWDC 2018 - Deliver an exceptional accessibility experience视频,其视频的内容得到了here的完美总结,并且呈现的示例可以为downloaded。这种编程不会在背景中聚焦任何对象。