码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-06-13 11:21:25      阅读:2820      评论:0      收藏:0      [点我收藏+]

标签:ios开发   uinavagationcontroll   右滑pop出栈   

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;
}

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

标签:ios开发   uinavagationcontroll   右滑pop出栈   

原文地址:http://blog.csdn.net/lotheve/article/details/46481119

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!