文章目录
设置侧滑返回
__weak JFNavigationController *weakSelf = self;
if([self respondsToSelector:@selector(interactivePopGestureRecognizer)]){
//设置侧滑返回
self.interactivePopGestureRecognizer.delegate = weakSelf;
}
self.delegate = weakSelf;
设置单个页面禁止侧滑返回
只设置 self.navigationController.interactivePopGestureRecognizer.enabled 为NO或者YES,不是特别好使,需要用下面这种方法。
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//禁止侧滑返回
if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]){
self.navigationController.interactivePopGestureRecognizer.delegate = self;
}
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
//恢复侧滑返回
if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]){
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
}
需要处理的坑
//自定义的NavigationController里实现如下代码,设置首页面不识别侧滑动作,否则侧滑了首页,虽然首页并不会被侧滑,但是想进入详情页的时候会点击没反应。
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
if(gestureRecognizer == self.interactivePopGestureRecognizer){
if(self.viewControllers.count < 2 || self.visibleViewController == [self.viewControllers objectAtIndex:0]){
return NO;
}
}
return YES;
}