ios - 在启用分页的情况下检测滚动视图中取消的滚动
问题描述
我想检测用户何时滚动到下一页(在启用分页的 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
更新,除非滚动“成功”?
解决方案
您可以从 didStartDragging 和 didEndDragging 比较滚动视图的 .contentOffset。当且仅当 contentOffset 改变时,分页动画是成功的
推荐阅读
- android - drawable.setColorFilter 标记为已弃用
- c# - c#中的递归方法
- android - 致命异常:kotlin.KotlinNullPointerException
- kendo-ui - 剑道列表框键盘导航错误
- python - Windows 10 默认服务
- excel - 如果从下拉列表中选择了“缺席”一词,则使用“£0.00”填充允许手动输入的单元格
- php - Laravel - 尝试访问 int 类型值的数组偏移量
- r - 如何设置应始终包含主要效果
- angular - Datepicker Material Angular:如何显示月份的全名?
- kubernetes - 将 Kubernetes 入口子域主机映射到服务路径