iOS自定义返回按钮 滑动返回失效

2,014 阅读1分钟

1.起因

self.navigationItem.leftBarButtonItems = [UIButton buttonWithType:UIButtonTypeSystem];

会干掉系统的vc的navigationItem.backBarButtonItem导致系统返回失效。

2.解决

在所在的VC,如果你有BaseVC就直接在baseVC中设置,然后禁用栈底的popGestrure,如果不禁用在栈底控制器右滑,会导致第一入栈操作失败。

self.navigationController.interactivePopGestureRecognizer.delegate = self;
///并且让baseVC遵循<UIGestureRecognizerDelegate>

.m大概长得这样子

#import "UIBaseViewController.h"

@interface UIBaseViewController () <UIGestureRecognizerDelegate>

@end

@implementation UIBaseViewController
- (void)viewDidLoad {
	[super viewDidLoad];
	self.navigationController.interactivePopGestureRecognizer.delegate = self

}
///禁用栈底控制器的滑动返回
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    
    return self.navigationController.childViewControllers.count > 1;
}
@end