導航欄右滑返回失效問題
阿新 • • 發佈:2019-02-01
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:(UIGestureRecognizerviewWillDisappear
的時候將該代理恢復到原狀self.navigationController.interactivePopGestureRecognizer.delegate =originalDelegate;因為UINavigationController屬於系統層級,否則進入其他介面右滑返回的時候都會走這個代理方法。