首页 > 解决方案 > 在启用分页的情况下检测滚动视图中取消的滚动

问题描述

我想检测用户何时滚动到下一页(在启用分页的 collectionView 中)。一旦用户开始滚动到下一个单元格,我就会使用该collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)功能对其进行准备。在这里,我设置了一个变量,指示哪个将是下一个可见单元格。

然后,当用户停止拖动时,我使用该scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)函数运行视觉更新。此时我知道哪个单元格可见,因为我之前将其保存在变量中。

但是,当用户开始拖动 collectionView 然后滚动回起始视图时,collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)已经保存了下一个项目。这会导致以下函数 ( scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)) 运行不正确的代码(视觉更新)。

有没有办法知道用户何时取消或实际执行滚动到下一页,以便我可以停止scrollViewDidEndDragging更新,除非滚动“成功”?

标签: iosswiftuitableviewuicollectionviewuiscrollview

解决方案


您可以从 didStartDragging 和 didEndDragging 比较滚动视图的 .contentOffset。当且仅当 contentOffset 改变时,分页动画是成功的


推荐阅读