VoiceOver启用时,我的UICollectionView不会填充任何单元格

问题描述 投票:1回答:1

我在iOS 13中遇到可访问性的特殊问题。

我有一个实现为UICollectionView的日历。如果VoiceOver处于打开状态,则集合视图为空-根本不会填充任何UICollectionViewCells。

我已覆盖正确的UICollectionViewDataSource调用。调用numberOfSectionscollectionView(numberOfItemsInSection),并返回正确的非零值。但是collectionView(cellForItemAt)从未被调用。那对我来说毫无意义。它知道我有多少节,有多少件物品,但并不关心这些物品。

如果关闭VoiceOver,它将调用collectionView(cellForItemAt),并正确填充我的收藏夹视图。在iOS 12中,无论VoiceOver是否打开,一切都可以正常工作。

我缺少什么,或者如何调试? VoiceOver的状态如何影响我的收藏夹视图是否被填充?

ios swift uicollectionview accessibility voiceover
1个回答
0
投票

我们向苹果代表报告了该问题,并得到了答复。发生的事情是,在iOS 13中,VoiceOver会向集合视图询问有关大于可见区域的信息。这是有意的更改,以支持某些类型的集合视图,这些视图的内容大小事先未知。因此,它调用了layoutAttributesForElements(in rect:)的覆盖,并为rect设置了较大的Y负值,而我们那里没有任何元素。

我们的解决方法是忽略给出的矩形的Y值,而是使用0的Y值。然后,iOS可以找到我们的收藏夹视图单元。

© www.soinside.com 2019 - 2024. All rights reserved.