美文网首页专业知识分享(iOS)
iOS 当你的左滑手势失效时的解决方案

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

作者: TEASON | 来源:发表于2015-12-02 17:09 被阅读2500次

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

    相关文章

      网友评论

        本文标题:iOS 当你的左滑手势失效时的解决方案

        本文链接:https://www.haomeiwen.com/subject/hntshttx.html