美文网首页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