Article Directory
Set sliding return
__weak JFNavigationController *weakSelf = self;
if([self respondsToSelector:@selector(interactivePopGestureRecognizer)]){
//设置侧滑返回
self.interactivePopGestureRecognizer.delegate = weakSelf;
}
self.delegate = weakSelf;
Set a single page to prohibit sliding back
Just set self.navigationController.interactivePopGestureRecognizer.enabled to NO or YES, which is not particularly easy to use. You need to use the following method.
-(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;
}
}
Pit to be dealt with
//自定义的NavigationController里实现如下代码,设置首页面不识别侧滑动作,否则侧滑了首页,虽然首页并不会被侧滑,但是想进入详情页的时候会点击没反应。
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
if(gestureRecognizer == self.interactivePopGestureRecognizer){
if(self.viewControllers.count < 2 || self.visibleViewController == [self.viewControllers objectAtIndex:0]){
return NO;
}
}
return YES;
}