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

来源:互联网 发布:nginx实现负载均衡 编辑:程序博客网 时间:2024/04/28 00:11

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

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

self.navigationController.interactivePopGestureRecognizer.enabled = YES;

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

self.navigationController.interactivePopGestureRecognizer.delegate = nil;

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

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

- (void)viewDidAppear:(BOOL)animated{__weak typeof(self) weakSelf = self; self.navigationController.interactivePopGestureRecognizer.delegate = weakSelf;}

然后实现手势协议即可:

#pragma mark - UIGestureRecognizerDelegate- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer{    //判断是否为rootViewController    if (self.navigationController && self.navigationController.viewControllers.count == 1) {        return NO;    }    return YES;}
0 0
原创粉丝点击