我正在UICollectionView中执行分页效果。我的解决方案如下所示。
setContentOffset
方法将在scrollViewWillEndDragging
中调用,并计算下一页或上一页的contentOffset x值,并使用动画进行设置。
但是,有一个问题是,一旦调用setContentOffset
函数,如果我触摸屏幕,则scrollView将停止。即使松开手指,手指也不会继续,这意味着它会停在错误的位置。
实际上,我尝试覆盖targetOffset
中的UICollectionViewFlowLayout
,但此问题仍然存在。另外,我尝试致电touchesEnded
,但这根本没有触发。此外,我尝试了isPagingEnabled
,它不会导致此问题,但是我的collectionView项更加复杂,这导致了错误的targetContentOffset
。
我当前的解决方案是在setContentOffset之后设置scrollView.isUserInteractionEnabled = false
,并在调用scrollViewDidEndScrollingAnimation
时将其设置回true。可以,但是我仍然想知道是否有什么好方法?
我同时尝试了Google日历和Outlook,它们会将您重置为应有的位置。
我在线搜索,找不到关于此问题的任何问题。
你能帮我吗?谢谢!
答案 0 :(得分:0)
我做了很多尝试,最后,我得到了一些正确的信息,可以与大家分享。
解决方案是在targetContentOffset
中设置scrollviewWillEndDragging
,然后我可以得到想要的东西。
这背后的道理是,如果您调用setContentOffset
,那么在第二次endDragging(当您在第一次endDragging之后触摸屏幕时)将不会调用scrollviewWillEndDragging
。但是,如果仅设置targetContentOffset = requiredContentOffset
,则将第二次调用endDragging,这时将再次调用分页方法以将UIScrollView
导航到正确的位置。
当您进行分页效果时,我从中学到的永远不会叫setContentOffset
。在线一些分页教程是完全错误的。