检测用户何时将手指从 UIScrollView 上移开
Posted
技术标签:
【中文标题】检测用户何时将手指从 UIScrollView 上移开【英文标题】:Detecting when user lifts finger off UIScrollView 【发布时间】:2015-09-27 19:12:49 【问题描述】:我想检测用户在滚动时何时在UITableView
中抬起手指,所以在UIScrollView
委托方法scrollViewDidScroll:
中
func scrollViewDidScroll(scrollView: UIScrollView)
// Some code…
if scrollView.panGestureRecognizer.state == .Ended
NSLog("ENDED")
对我来说这听起来应该可行,所以当我进一步调查并记录此时发生的状态时,仅有的两个日志是 Changed
和 Possible
。
据我了解,如果手势结束,Ended
应该在可能之前发生。
苹果文档:
手势识别器接收到被识别为连续手势结束的触摸。它在运行循环的下一个周期发送其操作消息(或多个消息)并将其状态重置为 UIGestureRecognizerStatePossible。
这里到底发生了什么?当用户在滚动过程中将手指从我的UITableView
上移开时,我如何找到?
【问题讨论】:
【参考方案1】:好的,所以scrollViewDidEndDragging:willDecelerate:
不会在滚动视图未被拖动时触发,实际上是在用户抬起手指时触发。这是Ended
被触发的地方。
【讨论】:
【参考方案2】:您可以通过实现-scrollViewDidEndDragging:willDecelerate:
UIScrollViewDelegate
方法来确定手指何时抬起。无需检查底层手势识别器的状态。
【讨论】:
是的,刚刚发现了困难的方法,哈哈。哦,好吧,我怪方法名称不清楚以上是关于检测用户何时将手指从 UIScrollView 上移开的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView之isTracking delaysContentTouches canCancelContentTouches