我在整个视图中添加了一个swipeUp手势。
我在整个视图中添加了longPressGestureRecognizer,将其minimunPressDuration设置为0.001f,以便它既可以检测按下操作又可以触摸移动动作,然后调用requireGestureToFail函数:
UILongPressGestureRecognizer *longPressGestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressed:)]; longPressGestureRecognizer.minimumPressDuration = 0.001f; [longPressGestureRecognizer requireGestureRecognizerToFail:swipeGestureRecognizer];
问题是:
当用户按住(不要移动)按钮时,longPress手势的状态仍为UIGestureStatePossible,因为swipeUp手势不会失败,因此它不会对...做出反应用户触摸。
如果我没有调用requireGestureRecognizerToFail,则所有包含swipeUp手势的手势都会被识别为longPress手势。
Implmenting shouldRecognizeSimultaneouslyWithGestureRecognizer:不是我所期望的。
我想要的是当按住(不要移动)按钮时,它会触发longPress,然后如果用户向上滑动它会触发swipeUp手势,如果用户拖动但触摸模式不适合swipeUp它仍会触发longPress。
我该如何实现?
答案 0 :(得分:0)
我认为使用多个手势实现自己的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