其实只需在导航栏控制器中加入下面这句代码就OK了
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
以上只是还原系统的边缘侧滑效果,如果要实现整个屏幕都能侧滑返回则需要我们自己来写下方法:
setp1:需要获取系统自带滑动手势的target对象
id target = self.navigationController.interactivePopGestureRecognizer.delegate;
setp2:创建全屏滑动手势~调用系统自带滑动手势的target的action方法
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
step3:设置手势代理~拦截手势触发
pan.delegate = self;
step4:别忘了~给导航控制器的view添加全屏滑动手势
[self.view addGestureRecognizer:pan];
step5:将系统自带的滑动手势禁用
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
steo6:还记得刚刚设置的代理吗?下面方法什么时候调用?在每次触发手势之前都会询问下代理,是否触发。
这个方法就是拦截手势触发的方法.
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
return NO;则不需要触发滑动手势
return YES;则需要触发滑动手势
}
OK 基本就是这个样子了