专业知识分享(iOS)

iOS 当你的左滑手势失效时的解决方案

2015-12-02  本文已影响2500人  TEASON

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

上一篇下一篇

猜你喜欢

热点阅读