UIScrollView setContentOffset(分页)已通过触摸屏停止

时间:2019-05-12 13:15:44

标签: ios pagination uiscrollview uicollectionview uiscrollviewdelegate

我正在UICollectionView中执行分页效果。我的解决方案如下所示。

setContentOffset方法将在scrollViewWillEndDragging中调用,并计算下一页或上一页的contentOffset x值,并使用动画进行设置。

但是,有一个问题是,一旦调用setContentOffset函数,如果我触摸屏幕,则scrollView将停止。即使松开手指,手指也不会继续,这意味着它会停在错误的位置。

实际上,我尝试覆盖targetOffset中的UICollectionViewFlowLayout,但此问题仍然存在。另外,我尝试致电touchesEnded,但这根本没有触发。此外,我尝试了isPagingEnabled,它不会导致此问题,但是我的collectionView项更加复杂,这导致了错误的targetContentOffset

我当前的解决方案是在setContentOffset之后设置scrollView.isUserInteractionEnabled = false,并在调用scrollViewDidEndScrollingAnimation时将其设置回true。可以,但是我仍然想知道是否有什么好方法?

我同时尝试了Google日历和Outlook,它们会将您重置为应有的位置。

我在线搜索,找不到关于此问题的任何问题。

你能帮我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我做了很多尝试,最后,我得到了一些正确的信息,可以与大家分享。

解决方案是在targetContentOffset中设置scrollviewWillEndDragging,然后我可以得到想要的东西。

这背后的道理是,如果您调用setContentOffset,那么在第二次endDragging(当您在第一次endDragging之后触摸屏幕时)将不会调用scrollviewWillEndDragging。但是,如果仅设置targetContentOffset = requiredContentOffset,则将第二次调用endDragging,这时将再次调用分页方法以将UIScrollView导航到正确的位置。

当您进行分页效果时,我从中学到的永远不会叫setContentOffset。在线一些分页教程是完全错误的。