闲时多研究研究代码或者多多封装一些常用的类,对自己有利而无害,作为一个程序员,我觉得只要多看,多敲,多琢磨,慢慢滴你也就会成为大牛。
效果图
21.gif
实现步骤:
1、viewDidLoad需要做的事情
self.delegate = self; __weak typeof(self) weakSelf = self; if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.interactivePopGestureRecognizer.delegate = weakSelf; }
2、实现UIGestureRecognizerDelegate代理中的方法
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ if (self.navigationController.viewControllers.count == 1) { return NO; }else{ return YES; } }
3、实现UINavigationControllerDelegate代理中的方法
1.实现didShowViewController方法
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ if ([navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { navigationController.interactivePopGestureRecognizer.enabled = YES; } //使navigationcontroller中第一个控制器不响应右滑pop手势 if (navigationController.viewControllers.count == 1) { navigationController.interactivePopGestureRecognizer.enabled = NO; navigationController.interactivePopGestureRecognizer.delegate = nil; } }
2.此方法中拦截所有push 进来的控制器
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.interactivePopGestureRecognizer.enabled = NO; } [super pushViewController:viewController animated:animated]; }
作者:flowerflower
链接:http://www.jianshu.com/p/5e7ac309cff4