自定义返回按钮后, 右滑返回会失效。
解决方法:
在BaseViewController里面代码设置 右滑返回的代理
self.navigationController.interactivePopGestureRecognizer.delegate = self;
设置完后,有个问题,就是一级页面会右滑时没有上级页面, 会出现卡死现象,
解决方法:
1级页面的viewDidAppear方法里面代码设置
self. navigationController. interactivePopGestureRecognizer.enabled = NO;
viewWillDisappear方法里面
self. navigationController.interactivePopGestureRecognizer.enabled = YES;
如果要某个页面不能右滑返回, 则可以通过
self.navigationController.interactivePopGestureRecognizer.enabled来控制
现象1:设置了interactivePopGestureRecognizer的代理时,能右滑返回时, 1级页面右滑时,会出现卡死,
没有设置interactivePopGestureRecognizer的代理时,右滑返回无效, 1级页面右滑时,不会出现卡死,
猜测1: 右滑手势必须是navigationController的interactivePopGestureRecognizer设置了代理才会创建,
原因1: 在设置了代理后, 手势就存在了, 但是在1级页面,
将代理设置为nil,右滑依然会卡死,证明手势没有随代理为nil而消失,
1级页面的卡死,不是navigationController调用了代理方法而卡死的,
是手势触发时, 做了一些系统操作而卡死的,
不是系统调用interactivePopGestureRecognizer的代理方法而卡死的
补充原因: 在1级页面navigationController的interactivePopGestureRecognizer的enabled设置为NO, 代理不设置为nil, 右滑不会卡死, 证明卡死跟代理无关
现象2 : navigationController的interactivePopGestureRecognizer设置了代理,右滑返回就能触发
证明: 返回事件是在右滑后, 在navigationController的interactivePopGestureRecognizer的代理方法里面执行的
网友评论