iOS之侧滑返回无需第三方,只需在自己的BaseNavController添加大概20行代码即可

效果图

iOS之侧滑返回无需第三方,只需在自己的BaseNavController添加大概20行代码即可_第1张图片

21.gif

实现步骤:

1、viewDidLoad需要做的事情

self.delegate = self;

__weaktypeof(self) weakSelf = self;

if([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {

self.interactivePopGestureRecognizer.delegate = weakSelf;

}

2、实现UIGestureRecognizerDelegate代理中的方法

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{

if(self.navigationController.viewControllers.count ==1) {

returnNO;

}else{

returnYES;

}

}

3、实现UINavigationControllerDelegate代理中的方法

1.实现didShowViewController方法

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{

if([navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {

navigationController.interactivePopGestureRecognizer.enabled = YES;

}

//使navigationcontroller中第一个控制器不响应右滑pop手势

if(navigationController.viewControllers.count ==1) {

navigationController.interactivePopGestureRecognizer.enabled = NO;

navigationController.interactivePopGestureRecognizer.delegate = nil;

}

}

2.此方法中拦截所有push 进来的控制器

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{

if([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {

self.interactivePopGestureRecognizer.enabled = NO;

}

[superpushViewController:viewController animated:animated];

}

iOS之侧滑返回无需第三方,只需在自己的BaseNavController添加大概20行代码即可_第2张图片

你可能感兴趣的:(iOS之侧滑返回无需第三方,只需在自己的BaseNavController添加大概20行代码即可)