自定义隐藏导航栏

2019-05-26  本文已影响0人  Leon1024

隐藏导航栏,在控制器自定义view当做导航栏的需求时用。
自定义的目的是为了保持原有的侧滑手势,又避免当导航栏的根控制器进行侧滑时引发异常的问题。

.h文件


NS_ASSUME_NONNULL_BEGIN

@interface LENHiddenNavigationController : UINavigationController

@end

NS_ASSUME_NONNULL_END

.m文件

#import "LENHiddenNavigationController.h"

@interface LENHiddenNavigationController () <UIGestureRecognizerDelegate>

@end

@implementation LENHiddenNavigationController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 成为 interactivePopGestureRecognizer 代理对象以响应侧滑动作
    self.interactivePopGestureRecognizer.delegate = self;
}

// 当控制器为导航的 rootViewController 的时候只拦截 interactivePopGestureRecognizer 手势
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    
    if ( gestureRecognizer == self.interactivePopGestureRecognizer ) {
        if ( self.viewControllers.count < 2 || self.visibleViewController == [self.viewControllers objectAtIndex:0] ) {
            return NO;
        }
    }
    
    return YES;
}

@end

上一篇 下一篇

猜你喜欢

热点阅读