0

我正在尝试在 ios 的按钮上实现 LongPress Gesture,然后是 Swipe Gesture。该视图更可能是 WhatsApp 应用程序的“滑动取消”和记录功能。

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

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

1 回答 1

0

我们不需要单独的滑动手势识别器。长按手势识别器中的不同状态可用于处理这种情况。

长按手势有不同的状态,如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];
    }

因此,我们可以使用 Gesture Delegate 方法和长按手势识别器来处理滑动。

于 2016-05-25T10:03:20.940 回答