ios - 当 VoiceOver 打开时,我的 UICollectionView 没有填充任何单元格

标签 ios swift uicollectionview accessibility voiceover

我在 iOS 13 中遇到了一个关于辅助功能的特殊问题。

我有一个作为 UICollectionView 实现的日历。如果打开 VoiceOver,则 Collection View 为空 - 它根本不会填充任何 UICollectionViewCell。

我已经覆盖了正确的 UICollectionViewDataSource 调用。 numberOfSectionscollectionView(numberOfItemsInSection) 被调用,并返回正确的非零值。但是 collectionView(cellForItemAt) 从未被调用。那对我来说没有任何意义;它知道我有多少个部分和多少项,但它不关心询问这些项。

如果我关闭 VoiceOver,它将调用 collectionView(cellForItemAt) 并正确填充我的 Collection View 。在 iOS 12 中,无论 VoiceOver 是否开启,一切正常。

我错过了什么,或者我该如何调试它? VoiceOver 的状态如何影响我的 Collection View 是否被填充?

最佳答案

我们向我们的 Apple 代表报告了该问题并得到了回复。发生的事情是,在 iOS 13 中,VoiceOver 向 Collection View 询问有关比可见的更大矩形的信息;这是一项有意的更改,以支持某些类型的 Collection View ,其内容大小事先未知。所以它调用了我们对 layoutAttributesForElements(in rect:) 的重写,其中矩形的 Y 值很大,我们没有任何元素。

我们的解决方法是忽略给定矩形的 Y 值,而是使用 0 的 Y 值。然后 iOS 能够找到我们的 Collection View 单元格。

关于ios - 当 VoiceOver 打开时,我的 UICollectionView 没有填充任何单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58330806/

相关文章:

ios - Swift 5 组合布局 - itemSize 和 groupSize 扭曲项目 subview

ios - 将消息从 View Controller 传递到 Swift 中的类

iOS 键盘 - 使用自动布局输入附件 View xib 未接收触摸事件

ios - 设置 Realm 架构版本

ios - Collection View 内的两个定向单元格,如何获取单元格标题?

iOS 如何在 CollectionView Controller 中创建搜索栏

ios - 在 320x568px 的 iPhone 6 上运行的 Cordova 3.8.0 - 缩放问题

ios - 附加路径组件 : does not do percentage encoding resulting in load failures in swift 3

ios - Typhoon DI 的 Storyboard集成

View Controller 之间的 Swift 通信