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!
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
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; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With