之前开发过程中,A (viewController)页面 是首页,A页面嵌入了B(viewController)子页面,从子视图B push 到 C页面,再添加了pop回来的按钮。点击pop回来的按钮页面都是没问题的,但是,手指侧滑返回上一页的时候A页面却直接黑屏,这极大的影响了用户体验,让我头疼。
问题原因,我觉得是我点击A 页面的子视图,导致无法识别要返回的视图。解决这个问题,要么指定返回的页面,要么禁用C页的系统侧滑返回的功能。在网上我找到了很多方法,类似以下的都无效:
// 关闭返回手势
// if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
// self.navigationController.interactivePopGestureRecognizer.enabled = NO;
// }
如果无效的话,建议使用另一位大神网友的这种方法,在此感谢网友的智慧和分享:
以下是网友的原文:
在药禁用的页面加上协议:<UIGestureRecognizerDelegate>
然后:
兄弟,如果你试过了各种方法都还是不行的话,不妨在试试下面的方法。
id traget = self.navigationController.interactivePopGestureRecognizer.delegate;
UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc]initWithTarget:traget action:nil];
[self.view addGestureRecognizer:pan];
直接将代码拷贝到viewDidLoad总就行了
确实解决了我的问题。
希望能帮助到你。