今天接到新的修改需求,要求指定的详情页面只有点击返回按钮才可返回,这样就必须关闭边缘返回,于是网上找了各种教程,总结下来基本上都是关掉navigation的interactivePopGestureRecognizer,关掉后测试发现达不到效果。无奈之下,自己尝试通过断点查看navigation上的gestureRecognizer发现有不止一个gestureRecognizer存在而且都是和view的transaction有关。既然关一个不成,索性使用遍历数组的方式将其全部关闭了,结果终于成功,现在献上代码,希望对大家有帮助!
//关闭响应
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSArray *navtureRecognizers = self.navigationController.view.gestureRecognizers;
[navtureRecognizers enumerateObjectsUsingBlock:^(UIGestureRecognizer *obj, NSUInteger idx, BOOL * _Nonnull stop) {
obj.enabled = NO;
}];
}
//打开响应
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSArray *navtureRecognizers = self.navigationController.view.gestureRecognizers;
[navtureRecognizers enumerateObjectsUsingBlock:^(UIGestureRecognizer *obj, NSUInteger idx, BOOL * _Nonnull stop) {
obj.enabled = YES;
}];
}