【问题标题】:Long press gesture recognizer issue长按手势识别问题
【发布时间】:2015-07-13 08:25:40
【问题描述】:

在 Interface Builder 中,我向 MKMapView 添加了按下手势识别器。

1 秒后发送一个事件(我正在使用它向地图添加一个图钉)。我已经检查了手势识别器的“取消触摸视图”行为,但我的问题是,一旦识别出长按手势,如果您将手指放在屏幕上并将其拖动到地图视图上,事件(长时间press) 会在拖动的同时不断发送,就好像它实际上是一个拖动手势识别器一样,导致我的地图中添加了几十个图钉......

我该如何解决这个问题?

谢谢。

【问题讨论】:

    标签: ios swift uigesturerecognizer uilongpressgesturerecogni


    【解决方案1】:

    根据documentation

    长按手势是连续的。手势开始 (UIGestureRecognizerStateBegan) 当允许的手指数 (numberOfTouchesRequired) 已按指定时间段 (minimumPressDuration) 并且触摸不会超出 允许的移动范围(allowableMovement)。 手势 每当手指移动时,识别器就会转换到 Change 状态, 并且它在任何手指时结束(UIGestureRecognizerStateEnded) 被提升了。

    重点突出。

    我相信您可能没有在手势识别器的委托方法中过滤状态。

    你需要这样的东西:-

    - (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)recognizer {
        if (recognizer.state == UIGestureRecognizerStateBegan) {
           // do your stuff...
        }
    }
    

    【讨论】:

    • 哇!非常感谢 !我没想到!
    • 没问题,很高兴我能帮上忙 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多