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了一次之後做的判斷。