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