出现 TouchID 警报时如何删除状态栏?

Posted

技术标签:

【中文标题】出现 TouchID 警报时如何删除状态栏?【英文标题】:How to remove status bar when TouchID Alert Appears? 【发布时间】:2015-02-09 19:07:25 【问题描述】:

我试图在整个应用程序中隐藏状态栏。但是,当 TouchID 警报从应用程序中出现时,状态栏就会出现。

在我的AppDelegate.swift 文件中,我添加了以下行:application.statusBarHidden = true

这似乎没有涵盖 TouchID 函数出现时的情况。这个案例有什么特别的吗?

【问题讨论】:

好问题,我不确定这是否可能...... 当您实现一个 Apple 框架(例如本地身份验证框架)时,它包含一个警报或活动警报,您实际上是将手机的焦点交给了系统,因此失去了对所发生事情的控制。一旦应用程序重新获得焦点,屏幕上的 View 很可能会再次显示 viewDidAppear。奇怪的是系统没有继续这种风格,但你无能为力。 【参考方案1】:

我知道它已经晚了,但对于那些仍然面临同样问题的人来说。它不是苹果的错误。你必须自己解决。

我已经在 ios 9、10、11 上对其进行了检查,并且工作正常。只需执行以下步骤:

打开 info.plist “基于视图控制器的状态栏外观”设置为 NO “状态栏最初是隐藏的”设置为 YES

完成了:)

【讨论】:

【参考方案2】:

我相信这是一个操作系统错误。我们将不得不等待 Apple 修复它。

与此同时,总是有一些令人讨厌的解决方法。 尝试在 0.2 秒后隐藏状态栏。

// Add this in the function that calls Touch ID
var dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.2 * Double(NSEC_PER_SEC)))
  dispatch_after(dispatchTime, dispatch_get_main_queue(), 
    self.hideStatusBar()
  )


// Add this function
func hideStatusBar () 
  UIApplication.sharedApplication().statusBarHidden = true

【讨论】:

以上是关于出现 TouchID 警报时如何删除状态栏?的主要内容,如果未能解决你的问题,请参考以下文章

即使出现警报也隐藏状态栏

如何从 Touch ID 警报视图中删除输入密码和取消按钮

按下标签栏项目时如何显示警报视图以及在其他目标中使用时如何忽略它?

如何在横向模式下使用 TouchID?

iPhone - 以编程方式删除状态栏

如何防止键盘出现在自定义警报视图上