1.设置导航栏的属性
2.统一不要在根控制器上设置返回键
3.统一设置全屏滑动效果
首先我会考虑到手势影响了默认只能在边缘滑动,所以打印Nav中的手势,得到
<UIScreenEdgePanGestureRecognizer: 0x7fdcb2f3ef10; state = Possible; delaysTouchesBegan = YES; view = <UILayoutContainerView 0x7fdcb2e10d00>;
target= <(action=handleNavigationTransition:,
target=<_UINavigationInteractiveTransition 0x7fdcb2f3e980>)>>
条件反射,我会先观察UIScreenEdgePanGestureRecognizer中的属性发现了
edges,我会先设置edgs为UIRectEdgeNone,这样没有边缘不就可以全屏幕滑动了吗?事实上我错了,没有效果。
这时候就考虑加pan手势用self.interactivePopGestureRecognizer.delegate去调用系统手势的handleNavigationTransition方法
最后要在<UIGestureRecognizerDelegate>中的一个协议方法里判断是否触发这个手势
这样就可以全屏滑动啦,有没有疑问为什么2.中的判断子控制器>0,而上面判断子控制器>1,解释一下,因为2.中的判断是在所有控制器push之前做的判断,上面的判断是在push了一次之后做的判断。