美文网首页iOS技术点iOS 开发每天分享优质文章ios实用开发技巧
ios之侧滑返回无需第三方,只需在自己的BaseNavContr

ios之侧滑返回无需第三方,只需在自己的BaseNavContr

作者: flowerflower | 来源:发表于2017-12-11 16:37 被阅读362次

    闲时多研究研究代码或者多多封装一些常用的类,对自己有利而无害,作为一个程序员,我觉得只要多看,多敲,多琢磨,慢慢滴你也就会成为大牛。

    效果图

    21.gif

    实现步骤:

    1、viewDidLoad需要做的事情
        self.delegate = self;
        
        __weak typeof(self) weakSelf = self;
        
        if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            
            self.interactivePopGestureRecognizer.delegate = weakSelf;
        }
    
    2、实现UIGestureRecognizerDelegate代理中的方法
    -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
        if (self.navigationController.viewControllers.count == 1) {
            return NO;
        }else{
            return YES;
        }
    }
    
    3、实现UINavigationControllerDelegate代理中的方法
      1. 实现didShowViewController方法
    - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
        
        if ([navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            navigationController.interactivePopGestureRecognizer.enabled = YES;
        }
    //使navigationcontroller中第一个控制器不响应右滑pop手势
        if (navigationController.viewControllers.count == 1) {
            navigationController.interactivePopGestureRecognizer.enabled = NO;
            navigationController.interactivePopGestureRecognizer.delegate = nil;
        }
    }
    
      1. 此方法中拦截所有push 进来的控制器
    -(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
        if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.interactivePopGestureRecognizer.enabled = NO;
        }
        [super pushViewController:viewController animated:animated];
    }
    
    图片.png

    相关文章

      网友评论

      • HanOBa:这边我借鉴了你的代码,还是没用?
        flowerflower:@HanOBa把代码贴出来 要看下你怎么写的才知道具体情况
      • SmackThat:直接父类nav:self.interactivePopGestureRecognizer.delegate = nil;还这么麻烦;而且如果一个控制器没导航栏,一个控制器有导航栏肯定会出现上楼说的色差的
      • 4e935a9983df:个人中心是不是用了透明导航栏?滑动上面有一半白色。
      • e43e5251876a:导航栏有明显的UI问题,改一下吧
        e43e5251876a:@flowerflower navigationBar返回手势的时候直接消失了
        flowerflower:@Only_Here 没有呀,那是模拟器,我上面没有截全而已
      • _琳哥:厉害 , 微信都没有的功能, 咱们花花20行就搞定了 ~ 完美 ~ !
        春暖花已开:@_虎哥 马屁拍得有点过了:smiley:
        _琳哥:@flowerflower 我的微信就没有。估计我的是个假苹果:sleepy:
        flowerflower:@_虎哥 微信有侧滑呀

      本文标题:ios之侧滑返回无需第三方,只需在自己的BaseNavContr

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