Disable gesture recognizer

Vins picture Vins · May 13, 2011 · Viewed 49.5k times · Source

I have two types of recognizer, one for tap and one for swipe

UIGestureRecognizer *recognizer;

//TAP
recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(numTap1:)];
[(UITapGestureRecognizer *)recognizer setNumberOfTouchesRequired:1];
[self.view addGestureRecognizer:recognizer];
self.tapRecognizer = (UITapGestureRecognizer *)recognizer;
recognizer.delegate = self;
[recognizer release];

//SWIPE RIGHT
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)];
self.swipeRightRecognizer =(UISwipeGestureRecognizer *)recognizer;
swipeRightRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeRightRecognizer];
self.swipeRightRecognizer = (UISwipeGestureRecognizer *)recognizer;
[recognizer release];

with this function I can disable taps on some objects.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

if ((touch.view == loseView) || (touch.view == subBgView) || (touch.view == btnAgain)) {

    return NO;
}

return YES;
}

How can I disable swipes?

Thanks a lot!

Answer

PeyloW picture PeyloW · May 13, 2011

UIGestureRecognizer has a property named enabled. This should be good enough to disable your swipes:

swipeGestureRecognizer.enabled = NO;

Edit: For Swift 5

swipeGestureRecognizer.isEnabled = false