隐藏导航栏,在控制器自定义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
网友评论