如何在加载新视图时禁用UISwipeGestureRecognizer?

在我的viewDidLoad我设置

UISwipeGestureRecognizer *swipeRecognizerU = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUpDetected:)]; swipeRecognizerU.direction = UISwipeGestureRecognizerDirectionUp; [self.view addGestureRecognizer:swipeRecognizerU]; 

当我通过弹出窗口加载新视图时,我需要禁用该手势

 // show popup view -(IBAction)showPopup:(id)sender { MJDetailViewController *detailViewController = [[MJDetailViewController alloc] initWithNibName:@"MJDetailViewController" bundle:nil]; [self presentPopupViewController:detailViewController animationType:MJPopupViewAnimationSlideBottomBottom]; } 

在弹出视图被取消后,我需要设置滑动手势。

 // hide popup view -(IBAction)hidePopup:(id)sender { [self dismissPopupViewControllerWithanimationType:MJPopupViewAnimationSlideBottomBottom]; } 

怎么做到这一点?

我认为UIGestureRecognizer有一个名为enabled的属性。 你试试这个,应该可以禁用你的滑动:

 swipeGestureRecognizer.enabled = NO; 

你需要在这里设置委托。

例如:

 swipeleft=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeleft:)]; swipeleft.direction=UISwipeGestureRecognizerDirectionLeft; swipeleft.delegate = self; [self.view addGestureRecognizer:swipeleft]; 

然后添加function

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ((touch.view == test[1]) || (touch.view == test[2]) || (touch.view == test[3])) { [gestureRecognizer setCancelsTouchesInView:YES]; [swipeleft setCancelsTouchesInView:YES]; [gestureRecognizer setEnabled:NO]; [swipeleft setEnabled:NO]; return NO; } else { [gestureRecognizer setCancelsTouchesInView:NO]; [swipeleft setCancelsTouchesInView:NO]; [gestureRecognizer setEnabled:YES]; [swipeleft setEnabled:YES]; return YES; } } 

我认为对你有用