我想检测用户在滚动时在UITableView
中抬起手指的时间,因此在UIScrollView
委托方法中scrollViewDidScroll:
func scrollViewDidScroll(scrollView: UIScrollView)
{
// Some code…
if scrollView.panGestureRecognizer.state == .Ended
{
NSLog("ENDED")
}
}
对我来说这听起来应该有效,所以当我进一步调查并记录此时发生的状态时,只有两个日志是Changed
和Possible
。
据我所知,如果手势已经结束,Ended
可能会发生。
Apple docs:
手势识别器已接收到被识别为连续手势结束的触摸。它在运行循环的下一个周期发送其动作消息(或消息),并将其状态重置为UIGestureRecognizerStatePossible。
这到底发生了什么?如何在滚动过程中找到用户从UITableView
抬起手指的时间?
答案 0 :(得分:1)
您可以通过实施-scrollViewDidEndDragging:willDecelerate:
UIScrollViewDelegate
方法来确定提起手指的时间。无需检查底层手势识别器的状态。
答案 1 :(得分:0)
好的,所以当滚动视图没有被拖动时scrollViewDidEndDragging:willDecelerate:
不会触发,实际上是当用户抬起手指时。这是Ended
被解雇的地方。