Каталог статей
Установить скользящий возврат
__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;
}