請支持原創, 如需轉載, 請注明出處@TEASON
iOS7開始, 出了左上角的返回按鈕之外, 還加入了手勢左滑的返回方式 .
它是通過navigationController
中的interactivePopGestureRecognizer
屬性來控制.
而一般情況下 . 左滑失效, 是因為自定義navigationBar的返回鍵造成 .
在自定義backButton之后, 加入下面這句就行 . 含義很明顯 . 把手勢的許可打開 .
self.navigationController.interactivePopGestureRecognizer.enabled = YES ;
當然. 我也碰到過不同的原因 . 但這不是重點 . 有統一的解決方案.
既然他是gesture. 必然是UIGesture的子類 .那么必然有UIGestureRecognizerDelegate
代理可以用來監聽手勢的詳細過程 .
interactivePopGestureRecognizer.delegate
可以把它設置為當前控制器 , 監聽手勢觸發過程詳細的回調 .
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
然而, 我們只需要用到gestureRecognizerShouldBegin
這個方法就能判斷是否允許開始這個手勢了.
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
return YES ;
}
so that's it .
參考
1、UIScreenEdgePanGestureRecognizer Class Reference
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScreenEdgePanGestureRecognizer_class/Reference/Reference.html#//apple_ref/occ/cl/UIScreenEdgePanGestureRecognizer
2、_UINavigationInteractiveTransition.h
https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/_UINavigationInteractiveTransition.h
3、自定義返回按鈕時,iOS7手勢返回遇到的問題
http://www.tuicool.com/articles/FB3IJ3
http://www.tuicool.com/articles/vMfAVv
4、iOS7滑動返回
http://blog.csdn.net/wmqi10/article/details/16850479