iOS 禁止单个页面的边缘返回功能的实现

今天接到新的修改需求,要求指定的详情页面只有点击返回按钮才可返回,这样就必须关闭边缘返回,于是网上找了各种教程,总结下来基本上都是关掉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;

}];

}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容