首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UICollectionView中可访问性顺序不正确

UICollectionView中可访问性顺序不正确
EN

Stack Overflow用户
提问于 2015-11-10 22:01:04
回答 1查看 2.9K关注 0票数 2

因此,我在一个UICollectionView中有一个UIViewController,它是制表符栏中的根视图控制器之一。我为contentInset为UICollectionView设置了一个标签,以便在collectionView顶部添加一个标签,这意味着UILabel是collectionView的一部分,而不是collectionView的headerView的一部分。为了实现将UILabel添加到UICollectionView,我使用

代码语言:javascript
运行
复制
collectionView.addSubview(theLabel)

我打开声音运行应用程序。所发生的是,画外音以正确的顺序通过所有的UICollectionViewCells,直到最后一个CollectionViewCell开始,然后转到位于collectionView顶部的标签,然后转到tabBar。我在这个Change order of read items with VoiceOver中尝试了答案,但是没有成功,这个解决方案确实改变了

代码语言:javascript
运行
复制
self.accessibilityElements

按照我想要的方式,除了over并没有真正按照self.accsibilityElements中的顺序进行,而且我也不确定发生了什么,是否有人会遇到同样的麻烦,因为在UICollectionView上使用了"addsubView“。如果(我说如果,因为我不认为任何人会以这种方式将subView添加到collectionView中)任何人都有任何想法--请在这里帮助我,这个bug被困的时间最长。

编辑

代码语言:javascript
运行
复制
class CollectionViewSubViewsAddedByTags: UICollectionView {

override func awakeFromNib() {
    super.awakeFromNib()
}

var accessibilityElementsArray = [AnyObject]()

override var accessibilityElements: [AnyObject]?{

    get{
        return accessibilityElementsArray
    }

    set(newValue) {
        super.accessibilityElements = newValue
    }
}

override func accessibilityElementCount() -> Int {
    return accessibilityElementsArray.count
}

override func accessibilityElementAtIndex(index: Int) -> AnyObject? {
    return self.accessibilityElementsArray[index]
}

override func indexOfAccessibilityElement(element: AnyObject) -> Int {
    return (accessibilityElementsArray.indexOf({ (element) -> Bool in
        return true
    }))!
}

override func didAddSubview(subview: UIView) {
    super.didAddSubview(subview)
    accessibilityElementsArray.append(subview)
    accessibilityElementsArray.sortInPlace { $0.tag<($1.tag)}
}

override func willRemoveSubview(subview: UIView) {
    super.willRemoveSubview(subview)
    if let index = (accessibilityElementsArray.indexOf({ (element) -> Bool in
        return true
    })) {
        accessibilityElementsArray.removeAtIndex(index)
    }

}

}

谢了,沙布里

EN

回答 1

Stack Overflow用户

发布于 2016-02-25 06:34:16

我也遇到过同样的问题--我在UICollectionView上使用了一个顶部的嵌入,以便为带有滚动的屏幕上/下滑动的标题留出空间。如果我在这个布局中使用了语音,那么整个系统就会变得混乱,焦点顺序也会不正确。为了解决这个问题,我所做的是在VO被激活时使用一个备用布局--而不是将标题放在集合视图上,而是将标题垂直放置在集合视图的上方,并在集合视图上设置0顶部嵌入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33640472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档