4

我想知道如何使用UIScrollViewDelegate来检测滚动视图何时突然停止移动,因为用户在从快速平移启动动量后触摸并按住屏幕。

scrollViewDidEndDecelerating:方法仅在用户抬起手指时针对上述情况触发。但是,如果用户在滚动视图动量期间点击并按住,则此方法不会触发(直到他们抬起手指)。当滚动视图在用户按下时停止时,是否有任何方法可以拦截这个?

4

3 回答 3

4

你试过使用scrollViewWillBeginDragging吗?或者(因为文档表明scrollViewWillBeginDragging可能不会立即触发)您可以尝试使用scrollViewDidScroll并检查用户当前是否正在触摸滚动视图......

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if(scrollView.isTracking){
        //do something
    }
}
于 2012-08-24T05:30:30.223 回答
2

好吧,当用户开始滚动时,您可以设置一个标志,该标志以scrollViewDidEndDecelerating. 这样,如果用户在标志被清除之前再次开始滚动,您就会知道他们在减速期间触摸了它。

于 2012-08-24T01:14:51.290 回答
0

您不必实现自己的。

我们的朋友 Apple 已经为您提供了检测情况的方法。

如果需要更多信息,请在此处参考指南:https ://developer.apple.com/documentation/uikit/uiscrollviewdelegate/1619436-scrollviewdidenddragging

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    if decelerate {
      print("true if scrolling stops, keeping touch on the screen!")
    } else {
      print("false if scrolling stops, detaching touch on the screen")
    }
}
于 2018-07-11T09:47:41.200 回答