在 iOS7 中拦截返回导航

Posted

技术标签:

【中文标题】在 iOS7 中拦截返回导航【英文标题】:Intercept back navigation in iOS7 【发布时间】:2013-09-23 03:18:19 【问题描述】:

如果有人没有保存他们的更改,我想阻止他们返回我的导航控制器。 SO上的大多数帖子都讨论了覆盖后退按钮(使用多种技术来做到这一点)。但是,ios7 现在允许您在navigationViewController 中滑动返回...

我确实看到了UINavigationControllerDelegate,它看起来像是我想要实现的delegate 的正确类型,但我看不到取消导航操作的方法。任何想法如何做到这一点?

【问题讨论】:

***.com/a/17213640/3226583 【参考方案1】:

不幸的是,iOS7 中没有任何变化,如果你想检查一下,你仍然需要伪造你的后退按钮。

顺便说一句,现在更容易了,因为您不需要伪造箭头按钮。

编辑:

这样做:

UIButton *backButton = [[UIButton alloc] initWithFrame: CGRectMake(0, 0, 44.0f, 30.0f)];
[backButton setImage:[UIImage imageNamed:@"back.png"]  forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(popVC) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

【讨论】:

但是如何拦截屏幕边缘拖动(iOS7 中的新功能)?那不使用按钮吗? 你只需要替换左边的backBarButtom而已。 您可能想要检测添加到 UIGestureRecognizer 的方法中的后退手势开始(使用 addTarget 消息)并从中显示警报。可能这会破坏手势 另一种选择是完全禁用后退手势

以上是关于在 iOS7 中拦截返回导航的主要内容,如果未能解决你的问题,请参考以下文章

Flutter中WillPopScope导航返回拦截

OkHttpInterceptor 从 kotlin 拦截器导航到登录片段

路由拦截方式 全局守卫导航

vue导航守卫和axios拦截器的区别

iOS开发:UINavigationController自定义返回按钮,系统导航支持侧滑返回

在 Xamarin.Forms UWP 应用程序中拦截鼠标后退按钮