IOS 常用小知识 1

2019-01-11  本文已影响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
來源:简书

上一篇下一篇

猜你喜欢

热点阅读