请支持原创, 如需转载, 请注明出处@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