在自己的navigationcontroller的viewdidload 里面写下如下代码
self.delegate = self;
__weak typeof(self) weakSelf = self;
if([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.interactivePopGestureRecognizer.delegate = weakSelf;
}
实现UIGestureRecognizerDelegate代理方法
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
if(self.navigationController.viewControllers.count == 1) {
returnNO;
}else{
returnYES;
}
}
实现UINavigationControllerDelegate代理中的方法
- (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;
}
}
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
if([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.interactivePopGestureRecognizer.enabled = NO;
}
[superpushViewController:viewController animated:animated];
}
网友评论