检测用户何时抬起手指UIScrollView

时间:2015-09-27 19:12:49

标签: ios uiscrollview uipangesturerecognizer

我想检测用户在滚动时在UITableView中抬起手指的时间,因此在UIScrollView委托方法中scrollViewDidScroll:

func scrollViewDidScroll(scrollView: UIScrollView)
{
    // Some code…


    if scrollView.panGestureRecognizer.state == .Ended
    {
        NSLog("ENDED")
    }
}

对我来说这听起来应该有效,所以当我进一步调查并记录此时发生的状态时,只有两个日志是ChangedPossible

据我所知,如果手势已经结束,Ended可能会发生。

Apple docs:

  

手势识别器已接收到被识别为连续手势结束的触摸。它在运行循环的下一个周期发送其动作消息(或消息),并将其状态重置为UIGestureRecognizerStatePossible。

这到底发生了什么?如何在滚动过程中找到用户从UITableView抬起手指的时间?

2 个答案:

答案 0 :(得分:1)

您可以通过实施-scrollViewDidEndDragging:willDecelerate: UIScrollViewDelegate方法来确定提起手指的时间。无需检查底层手势识别器的状态。

答案 1 :(得分:0)

好的,所以当滚动视图没有被拖动时scrollViewDidEndDragging:willDecelerate:不会触发,实际上是当用户抬起手指时。这是Ended被解雇的地方。