在 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 中拦截返回导航的主要内容,如果未能解决你的问题,请参考以下文章
OkHttpInterceptor 从 kotlin 拦截器导航到登录片段