iOS结合长按和滑动手势

Posted

技术标签:

【中文标题】iOS结合长按和滑动手势【英文标题】:iOS Combining longPress and swipe gesture 【发布时间】:2014-08-03 10:30:49 【问题描述】:

    我向整个视图添加了向上滑动手势。

    我在整个视图中添加了一个 longPressGestureRecognizer,设置它的 minimunPressDuration 等于 0.001f 以便它可以检测按下动作和触摸移动动作,然后调用 requireGestureToFail 函数:

 UILongPressGestureRecognizer *longPressGestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressed:)];
 longPressGestureRecognizer.minimumPressDuration = 0.001f; 
 [longPressGestureRecognizer requireGestureRecognizerToFail:swipeGestureRecognizer];

问题是:

当用户按住(不要移动)按钮时,长按手势的状态保持为 UIGestureStatePossible 因为向上滑动手势不会失败,因此它不会对用户触摸做出反应。

如果我不调用 requireGestureRecognizerToFail 所有手势,包括 swipeUp 手势,都将被识别为 longPress 手势。

实现 shouldRecognizeSimultaneouslyWithGestureRecognizer: 不是我所期望的。

我想要的是当按住(不要移动)一个按钮时,它会触发 longPress,然后如果用户向上滑动它会触发 swipeUp 手势,如果用户拖动但触摸模式不适合 swipeUp 它仍然会触发 longPress .

我该如何实现?

【问题讨论】:

你试过倒车吗?也许滑动应该需要长按才能失败。 谢谢,但它不起作用。尽管如此,所有手势都被识别为 longPress。 【参考方案1】:

我认为用多个手势实现您自己的 UIGestureRecognizer 或 UIView 子类会更容易。看看这个:UITapGestureRecognizer - make it work on touch down, not touch up?https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecognizer_basics.html#//apple_ref/doc/uid/TP40009541-CH2-SW2

【讨论】:

以上是关于iOS结合长按和滑动手势的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 中的长按和平移手势

结合向下滑动和长按

Android:如何在listView上的项目中结合滑动手势和长按

Vue 移动端的长按与触摸事件

检测音量按钮的长按和短按 - iOS

将长按手势和拖动手势结合在一起