效果图
21.gif
实现步骤:
1、viewDidLoad需要做的事情
self.delegate = self;
__weaktypeof(self) weakSelf = self;
if([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.interactivePopGestureRecognizer.delegate = weakSelf;
}
2、实现UIGestureRecognizerDelegate代理中的方法
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
if(self.navigationController.viewControllers.count ==1) {
returnNO;
}else{
returnYES;
}
}
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;
}
[superpushViewController:viewController animated:animated];
}