2019/01/10 16:20

自定义导航栏,反对手势

#import "JINavigationController.h"@interface JINavigationController ()<UINavigationControllerDelegate,UIGestureRecognizerDelegate>@end@implementation JINavigationController+ (void)initialize {    //appearance办法返回一个导航栏的外观对象    //批改了这个外观对象,相当于批改了整个我的项目中的外观    UINavigationBar *navigationBar = [UINavigationBar appearance];    //设置导航栏背景色彩    [navigationBar setBarTintColor:[UIColor whiteColor]];    //设置标题栏色彩    navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor blackColor], NSFontAttributeName : [UIFont systemFontOfSize:18]};    //设置NavigationBarItem文字的色彩    //[navigationBar setTintColor:[UIColor blackColor]];}- (void)viewDidLoad {    [super viewDidLoad];    __weak typeof(self) wkself = self;    self.delegate = wkself;}///MARK: override//全副批改返回按钮,然而会失去右滑返回的手势- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{    if (self.viewControllers.count > 0) {        viewController.hidesBottomBarWhenPushed = YES;        viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_back_black"] style:UIBarButtonItemStyleDone target:self action:@selector(backClickedAction)];    }    //在push一个新的VC时,禁用滑动返回手势    if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {        self.interactivePopGestureRecognizer.enabled = NO;    }    [super pushViewController:viewController animated:animated];}-(void)backClickedAction {    [self popViewControllerAnimated:YES];}///MARK: UINavigationControllerDelegate- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{    //齐全展现出VC时,启用滑动返回手势    if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {        self.interactivePopGestureRecognizer.delegate = self;        self.interactivePopGestureRecognizer.enabled = YES;    }    //解决根试图左滑页面卡死    if (navigationController.viewControllers.count == 1) {        navigationController.interactivePopGestureRecognizer.enabled = NO;        navigationController.interactivePopGestureRecognizer.delegate = nil;    }}///MARK: UIGestureRecognizerDelegate//承受多手势- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{    return YES;}- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{    return [gestureRecognizer isKindOfClass:UIScreenEdgePanGestureRecognizer.class];}@end