在我目前正在处理的应用程序中,有一个嵌套的集合视图设置。外部集合视图包含可垂直滚动的大单元格,每个单元格包含另一个具有较小单元格的集合视图(子集合视图中的布局不同,这就是为什么有多个单元格)。
在视觉上,一切正常,但我遇到了Voice Over的问题:当我到达第一个子集合视图中的最后一个项目时(即外部集合视图的第一个单元格的最后一项),我无法通过滑动选择下一个项目。相反,iOS会将声音视为最后一个项目。
我可以用三指滑动向下滚动,然后选择下一个元素,但这显然不是必需的。选择最后一个元素并按相反顺序返回可以按预期工作。
当最初只有一个(外部集合视图的)单元格可见时,似乎只会出现问题。如果可以看到多个单元格,一切正常。但是,我无法更改外部单元格的大小,因为这会完全改变布局。
我在下面创建了一个示例视图控制器来演示此问题。除了单元格的大小之外,项目中的两个集合视图是相同的。具有较小单元格的第一个集合视图按预期工作。第二个没有(当选择下一个单元格时,iOS播放"蜂鸣声"当选择了最后一个可见单元格时发出声音,即使有更多单元格进一步向下)。
所以,我的问题是:
到目前为止我尝试过的解决方案:
编辑: 演示此问题的ViewController的完整代码:
import io
Image.open(io.BytesIO(graph.create_png()))
修改:这是一段显示问题的视频:https://vimeo.com/229249955(请注意,我在那里添加了一些描述)。
答案 0 :(得分:2)
根据我的理解问题,一旦到达内部集合视图中的最后一个单元格,就无法滚动到外部集合视图中的下一个单元格。但是,三指滑动有效。
这是因为集合视图上的反弹属性。尝试关闭内部集合视图上的bounce属性。
在上面的代码中,在OuterCell init方法中添加以下代码行。
innerCollectionView.bounces = false