检测用户何时将手指从 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")
    

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

据我了解,如果手势结束,Ended 应该在可能之前发生。

苹果文档:

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

这里到底发生了什么?当用户在滚动过程中将手指从我的UITableView 上移开时,我如何找到?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

是的,刚刚发现了困难的方法,哈哈。哦,好吧,我怪方法名称不清楚

以上是关于检测用户何时将手指从 UIScrollView 上移开的主要内容,如果未能解决你的问题,请参考以下文章

检测用户何时中断 UIScrollView 动画

Android:如何检测滚动何时结束

在手机上,检测用户何时滚动“过去”屏幕顶部

IOS UIScrollView - 同时滚动和点击元素

UIScrollView之isTracking delaysContentTouches canCancelContentTouches

如何检测UIScrollView何时完成滚动在Swift中