1. 程式人生 > >導航欄右滑返回失效問題

導航欄右滑返回失效問題

1.很多時候我們都會自定義系統的返回按鈕,這樣就可能導致右滑返回失效的問題,解決方式就是:讓當前控制器成為導航欄右滑返回手勢UIScreenEdgePanGestureRecognizer的代理

self.navigationController.interactivePopGestureRecognizer.delegate =self;

2.有的時候我們在系統右滑返回的時候要處理一些事情,譬如以下場景:當前控制器上正在進行編輯操作,當用戶右滑返回的時候我們希望彈框提示使用者是否要放棄編輯,這個時候我們也要拿到這個代理.第一步:在viewdidload的時候,id originalDelegate

=self.navigationController.interactivePopGestureRecognizer.delegate,你會發現它的原始代理就是UINavigationController本身;第二步:在viewwillappear的時候,讓當前控制器成為導航欄右滑返回手勢的代理

self.navigationController.interactivePopGestureRecognizer.delegate =self;第三步:實現

UIGestureRecognizerDelegate

的代理方法- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer
*)gestureRecognizer,通過這個方法我們就可以阻斷系統的返回去做一些處理。但切記在

viewWillDisappear

的時候將該代理恢復到原狀

self.navigationController.interactivePopGestureRecognizer.delegate =originalDelegate;因為UINavigationController屬於系統層級,否則進入其他介面右滑返回的時候都會走這個代理方法。