在开发过程中往往我们不是每个界面都需要系统返回手势, 有的界面需要禁止掉,我经常用到一下两种方法, 仅供参考
1 这种是最常见的
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// 禁用返回手势
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
// 开启返回手势
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
}
因为我在用这个的时候 出现了一点问题, 那就是, 当前页面的侧滑手势的确被禁掉了, 但是其他界面的都不可以了, 于是就用了第二种方法
2 通过给self.view 添加手势 (直接放在viewDidLoad即可)
//禁止侧滑返回
id traget = self.navigationController.interactivePopGestureRecognizer.delegate;
UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc]initWithTarget:traget action:nil];
[self.view addGestureRecognizer:pan];
这里需要注意的是 无论你当前界面有几个子视图 都需要添加在 self.view 上