分页scrollView中的跟踪页面

时间:2017-11-29 15:42:17

标签: ios swift uiscrollview

在我的iOS应用程序(iOS 11,Swift 4)上,有一个分页滚动视图。要跟踪用户当前正在查看的页面,我尝试使用scrollViewWillBeginDraggingscrollViewDidEndDraggingscrollViewDidEndDecelerating方法。

然而,这些似乎还不够。我将使用一个例子。让我们说scrollView有2个页面,用户正在查看最左边的那个(索引0)。

  • 如果用户在单个手势上向右滑动,则一切正常(调用beginDragging,然后调用end dragging,最后调用endDecelerating)

  • 如果用户尝试向左滑动(到没有其他页面的位置),则当用户释放触摸时,用户界面会按照应有的方式快速向后移动。这里的问题是,虽然调用didEndDragging并将willDecelerate参数设置为true,但永远不会调用didEndDecelerating。这让我对目前正在浏览的页面进行了松散的跟踪。

我需要知道用户何时开始滚动,以及滚动何时停止。有没有更好的策略来实现这个目标?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用scrollViewDidScroll委托方法,并在那里基于contentOffset,您可以计算正在显示的页面。此外,UIScrollView还具有isDragging,isDecelerating等属性,可以帮助您。