【问题标题】:Change default behavior of home button press when alert view is visible更改警报视图可见时按下主页按钮的默认行为
【发布时间】:2016-07-08 21:29:18
【问题描述】:

注意:当我写“警报视图”时,我指的是UIAlertController UIAlertControllerStyleAlert

当我的应用在最短时间后进入前台时,会出现 customPinUnlockViewController。此行为发生在 iOS 8 和 iOS 9(可能还有其他版本,但我没有测试过其他版本)

如果用户启用了 TouchID,则会在 PinUnlockVC 上显示一个警报视图,提示用户使用 TouchID 解锁应用程序,而不是输入 pin。

当我按下主页按钮时,警报视图被关闭。 应用程序没有后台 - 只有警报视图被关闭。这不是期望的行为,但它似乎是默认的操作系统行为。

应用程序中的任何其他位置,当我按下主页按钮时,应用程序将进入后台。这是期望的行为。

如何覆盖,在这种情况下,默认的操作系统功能是什么,如果警报视图可见,按下主页按钮以使应用程序后台运行?

我不确定当 any 警报视图可见时是否会发生这种情况,或者它是否特定于 TouchID 提示警报视图(尽管我不明白为什么它会特定于这种情况)。

提前致谢。

【问题讨论】:

  • 为什么这被否决了?
  • 不知道。不是我。在研究方面,您能否提供更多有助于诊断的证据?
  • 我在推送通知警报中遇到了同样的问题。通过点击主页按钮(iPad Air 2 / iOS 11.3),AlertView 消失并且问题被拒绝。通过问题:“如果应用程序可以使用相机”,在我回答警报问题之前,主页按钮是无用的。 Apple 是否以某种方式改变了 AlertViews 的行为? (得到了我的支持;))

标签: ios objective-c uialertcontroller touch-id home-button


【解决方案1】:

我尚未确认您所看到的行为,但如果您对问题(应用程序不会进入后台)和原因(因为有一个 UIAlertController 提出)是正确的,那么这里有一个想法解决方法:在viewDidLoad,订阅...

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil];

然后在收到appWillResignActive...

- (void)appWillResignActive:(NSNotification *)notification {
    if ([self.presentedViewController isKindOfClass:[UIAlertController self]]) {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
}

【讨论】:

  • 这对我不起作用,这就是为什么我没有接受您提交的正确答案。
  • 没关系。很抱歉,它没有用。我认为它不起作用表明您的诊断不正确......问题不是由于应用程序由于 UIAlertController 而没有后台。
  • 这绝对是因为 UIAlertController。没有别的了。自己试试吧。
  • 所以任何人都可以重现这个,而无需在下面堆叠您的自定义 PinUnlock vc?这就是所谓的最小的、完整的、可验证的例子。 (stackoverflow.com/help/mcve)。您可以编辑您的问题以包含它吗?任何人都可以采取哪些简单的步骤来发现错误行为,以及您认为正确的行为是什么。
  • 我正在使用 touchID,但我遇到了同样的问题。你真的修了吗?我认为这仅与TouchID的系统UIAlert有关,我以前从未见过这种行为。
猜你喜欢
  • 1970-01-01
  • 2011-06-24
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
相关资源
最近更新 更多