如何在 ios 中实现 UI LongPressGesture 后跟滑动手势

How to Implement a UILongPressGesture followed by Swipe gesture in ios

我正在尝试在 ios 中的按钮上实现 LongPress 手势和轻扫手势。该视图更有可能是 WhatsApp 应用程序的 "Slide to Cancel" 和记录功能。

目前我没有收到滑动手势事件。 我也在实施 shouldRecognizeSimultaneouslyWithGestureRecognizer 方法。请建议。

(BOOL)gestureRecognizer:(UIGestureRecognizer *) recognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

我们不需要单独的滑动手势识别器。 Long Press Gesture Recognizer 中的不同状态可以用来处理这种情况。

长按手势有不同的状态,如 UIGestureRecognizerStateBeganUIGestureRecognizerStateChangedUIGestureRecognizerStateEnded

UIGestureRecognizerStateBegan 在您长按子视图时立即被调用。

UIGestureRecognizerStateChanged 在用户尝试移动手指时被调用。

UIGestureRecognizerStateEnded 在用户从触摸点抬起手指时调用。

- (void)longPressGestureForPreviewImageView:(UILongPressGestureRecognizer *)recognizer{

    if (recognizer.state == UIGestureRecognizerStateBegan)
    {
        // Long press detected, start the timer
        [self showPreviewImage:recognizer];
    }
    else if(recognizer.state == UIGestureRecognizerStateChanged)
    {
        NSLog(@"Swipe up");

        if ([self.thumbnailImageView.gestureRecognizers containsObject:recognizer]) {
            [self.thumbnailImageView removeGestureRecognizer:recognizer];
        }
    }
    else if(recognizer.state == UIGestureRecognizerStateEnded)
    {
        [self hidePreviewImage];
    }

因此我们可以使用手势委托方法和长按手势识别器一起处理滑动。