【问题标题】:Detect sudden scroll stop in UIScrollView检测 UIScrollView 中的突然滚动停止
【发布时间】:2012-07-02 05:11:17
【问题描述】:

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

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

【问题讨论】:

    标签: ios uiscrollview uiscrollviewdelegate


    【解决方案1】:

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

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        if(scrollView.isTracking){
            //do something
        }
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您不必自己实现。

        我们的朋友 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")
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-17
          • 1970-01-01
          • 2015-12-26
          • 2014-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多