IOS开发—视图控制器左边缘右滑pop出栈

来源:互联网 发布:如何认定利用网络犯罪 编辑:程序博客网 时间:2024/04/28 01:21

IOS视图控制器左边缘右滑pop出栈

IOS7.0之后,苹果优化了一个小功能,就是对于UINavagationController堆栈里的UIViewController,只要轻轻在视图控制器的左边缘右滑一下,该视图控制器就会pop出栈(前提当然是对于非根视图控制器而言)。实现方法很简单,一句话搞定:

[objc] view plaincopy
  1. self.navigationController.interactivePopGestureRecognizer.enabled = YES;  

事实上对于一个视图控制器而言,该属性的默认值即为YES,因此不设置也能实现右滑pop的功能。然而这个功能很有局限性,因为它不允许当前视图控制器自定义了leftBarButtonItem,一旦自定义,右滑功能就会失效。这里有一个方法:

[objc] view plaincopy
  1. self.navigationController.interactivePopGestureRecognizer.delegate = nil;  

设置代理为nil之后即便自定义了leftBarButtonItem也可以右滑pop。 

事实上如果自定义了leftBarButtonItem,常用的做法是重新设置代理:

[objc] view plaincopy
  1. - (void)viewDidAppear:(BOOL)animated{  
  2. __weak typeof(self) weakSelf = selfself.navigationController.interactivePopGestureRecognizer.delegate = weakSelf;  
  3. }  

然后实现手势协议即可:

[objc] view plaincopy
  1. #pragma mark - UIGestureRecognizerDelegate  
  2. - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer{  
  3.     //判断是否为rootViewController  
  4.     if (self.navigationController && self.navigationController.viewControllers.count == 1) {  
  5.         return NO;  
  6.     }  
  7.     return YES;  
  8. }  
0 0
原创粉丝点击