实现步骤:
1、viewDidLoad需要做的事情
|
1
2
3
4
5
6
7
8
|
self.delegate = self; __weak typeof(self) weakSelf = self; if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.interactivePopGestureRecognizer.delegate = weakSelf; } |
2、实现UIGestureRecognizerDelegate代理中的方法
|
1
2
3
4
5
6
7
|
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ if (self.navigationController.viewControllers.count == 1) { return NO; }else{ return YES; }} |
3、实现UINavigationControllerDelegate代理中的方法
-
1.实现didShowViewController方法
|
1
2
3
4
5
6
7
8
9
10
11
|
- (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 进来的控制器
|
1
2
3
4
5
6
|
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.interactivePopGestureRecognizer.enabled = NO; } [super pushViewController:viewController animated:animated];} |


被折叠的 条评论
为什么被折叠?



