Disable gesture recognizer
51,056
Solution 1
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
Solution 2
Why don't you set the delegate for the swipe gesture recognizer too and handle them within the same delegate method.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ( [gestureRecognizer isMemberOfClass:[UITapGestureRecognizer class]] ) {
// Return NO for views that don't support Taps
} else if ( [gestureRecognizer isMemberOfClass:[UISwipeGestureRecognizer class]] ) {
// Return NO for views that don't support Swipes
}
return YES;
}
Author by
Vins
Updated on July 09, 2022Comments
-
Vins over 1 year
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!
-
Unheilig over 10 years@PeyloW: +1 I thought I would need to remove it and re-add it on the view.
-
ima747 about 8 yearsAdditionally you can set userInteractionEnabled = NO on the view that the gesture is attached to. This is handy if you're using some sort of overlay that you're going to want to disable the underlying content anyway. This will also automatically get toggled based on hidden and alpha values for the view.