在我的iOS应用程序(iOS 11,Swift 4)上,有一个分页滚动视图。要跟踪用户当前正在查看的页面,我尝试使用scrollViewWillBeginDragging
,scrollViewDidEndDragging
和scrollViewDidEndDecelerating
方法。
然而,这些似乎还不够。我将使用一个例子。让我们说scrollView有2个页面,用户正在查看最左边的那个(索引0)。
如果用户在单个手势上向右滑动,则一切正常(调用beginDragging,然后调用end dragging,最后调用endDecelerating)
如果用户尝试向左滑动(到没有其他页面的位置),则当用户释放触摸时,用户界面会按照应有的方式快速向后移动。这里的问题是,虽然调用didEndDragging
并将willDecelerate
参数设置为true,但永远不会调用didEndDecelerating
。这让我对目前正在浏览的页面进行了松散的跟踪。
我需要知道用户何时开始滚动,以及滚动何时停止。有没有更好的策略来实现这个目标?
谢谢!
答案 0 :(得分:0)
您可以使用scrollViewDidScroll委托方法,并在那里基于contentOffset,您可以计算正在显示的页面。此外,UIScrollView还具有isDragging,isDecelerating等属性,可以帮助您。