我们不需要单独的滑动手势识别器。长按手势识别器中的不同状态可用于处理这种情况。
长按手势有不同的状态,如UIGestureRecognizerStateBegan、UIGestureRecognizerStateChanged和UIGestureRecognizerStateEnded。
只要您长按子视图,就会调用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 方法和长按手势识别器来处理滑动。