美文网首页
IOS 常用小知识 1

IOS 常用小知识 1

作者: _码奴 | 来源:发表于2019-01-11 16:00 被阅读0次

    导航栏常用隐藏方式

    //  会屏蔽右划返回的功能
    self.navigationController.navigationBarHidden = YES;
    //  不会屏蔽右划返回的功能
    self.navigationController.navigationBar.hidden = YES;
    

    系统导航栏时常会限制很对视图的处理,所以经常会用到自定义导航栏,如果自定义导航栏的时候还需要保持 “右划返回的功能” 的功能那么就使用第二种方式

    self.navigationController.navigationBar.hidden = YES;
    

    我们有时需要划动返回,也有时不需要划动手势,下面时三种禁止划动返回的方式:
    第一种:(推荐使用)
    在viewController种使用下面代码禁止划动返回手势,

    if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            // 如果设置为YES,那么是允许划动返回手势,默认是YES
            self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    }
    

    第二种:(不推荐),因为如果还有其他手势冲突需要代理解决,为了不影响其他手势,处理较为麻烦,所以在多个自定义手势存在的情况下不推荐使用

    - (void)viewDidAppear:(BOOL)animated {
        
        self.navigationController.interactivePopGestureRecognizer.delegate = self;
        
    }
    
    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
        
        //YES:允许右滑返回  NO:禁止右滑返回
        return NO;
        
    }
    

    第三种:如果以上两种方法尝试过没有用的情况下推荐第三种方法来解决,此方法不够官方。如果第一种可以的话,不推荐使用这种方式

    - (void)viewWillAppear:(BOOL)animated {
        
        //禁止返回
        id traget = self.navigationController.interactivePopGestureRecognizer.delegate;
        UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc]initWithTarget:traget action:nil];
        [self.view addGestureRecognizer:pan];
        
    }
    

    手势划动问题参考链接:

    作者:等不来的期待
    链接:https://www.jianshu.com/p/517bb7b6604a
    來源:简书

    相关文章

      网友评论

          本文标题:IOS 常用小知识 1

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