iOS系统右滑返回手势问题及解决方案

2018-07-18  本文已影响0人  季夏_雨

1.右滑手势失效

2.右滑手势与其他手势冲突

3.右滑手势导致应用 Crash

4.右滑手势的开启与关闭

hidesBackButton                   - 是否隐藏原生返回按钮,当前控制器设置,当前控制器有效
backBarButtonItem                 - 当前控制器设置,下一级控制器生效
leftBarButtonItem                 - 当前控制器设置,当前控制器生效
leftBarButtonItems                - 当前控制器设置,当前控制器生效
leftItemsSupplementBackButton     - 在leftBarButtonItem设置之后,再设置该属性可以控制backBarButtonItem的被覆盖状态

系统原生的右滑返回是OK的,但如果设置了 hidesBackButton 、 backBarButtonItem 、 leftBarButtonItem 、 leftBarButtonItems 几个属性,原生的右滑返回手势就会失效。

其一,可以很便捷地解决右滑失效、手势冲突、右滑 Crash 等问题

其二,返回按钮你可以随意自定义

其三,在混合式开发中,可以在拦截的代理回调中给 web 跳转也增加逐级返回体验


<UIGestureRecognizerDelegate>
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
self.navigationController.interactivePopGestureRecognizer.enabled  = TRUE;

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    DLog(@" gestureRecognizerShouldBegin : %@ \n %@",gestureRecognizer,[gestureRecognizer class]);
    BOOL rlt = FALSE;
    // 手势
    if(gestureRecognizer == self.navigationController.interactivePopGestureRecognizer){
        // 控制器堆栈
        if(self.navigationController.viewControllers.count >= 2){
            rlt = TRUE;
        }
    }
    return rlt;
}

其中可以将该部分代码放在积累控制器设置或自定义导航栏控制器中设置;然后在不需要的控制器中使用 self.navigationController.interactivePopGestureRecognizer.enabled = FALSE; 单独关闭即可

上一篇 下一篇

猜你喜欢

热点阅读