gpt4 book ai didi

ios - UIAlertViews、UIActionSheets 和 keyWindow 问题

转载 作者:可可西里 更新时间:2023-11-01 04:46:51 27 4
gpt4 key购买 nike

我创建了一个 iOS 7 passcode replica我有这个问题,我似乎无法解决。我需要将锁定屏幕 View 置于其他所有内容之上,因此该应用程序包含在 iOS 的多任务 View 中,因此我将其直接添加到 keyWindow。到目前为止一切都很好。

如果有一个 alertViewactionSheet(为了简单起见,在这篇文章中只会提到 alertView)打开时就会出现问题我必须显示锁定屏幕。已经多次回答说在iOS 7中没有引用alertView,这是真的,显示它们的窗口是_UIModalItemHostingWindow,它有2 UIView,确实没有引用 alertView

这个_UIModalItemHostingWindow 也变成了新的keyWindow,所以它在其他一切之上,但是在中找不到[UIApplication sharedApplication].windows 意思是如果我将锁屏添加到我以前的 keyWindow(默认的 keyWindow,如果你愿意的话),它将在alertView 及其暗淡的背景,因此用户在关闭 alertView 之前无法与锁定屏幕进行交互。另一个选项将在下面进一步详细说明。

锁定屏幕是这样工作的:在 applicationDidEnterBackground 上,它检查密码是否已启用;如果它已启用且密码持续时间为 0(用户选择立即锁定应用程序),它现在会添加锁定屏幕,因此它会覆盖多任务 View 中的应用程序。现在,我上面提到的选项是将 alertView 添加到此 _UIModalItemHostingWindow 窗口,但是当返回到应用程序时,锁屏 View 显示有 1 秒以上的延迟(即使我在进入后台之前添加了它!)并且该应用程序未被多任务 View 中的任何内容覆盖。 (目前也显示位置不对,如果你继续下载它,那是固定的,但我还没有推送提交)。

我尝试隐藏并removeFromSuperview 这个_UIModalItemHostingWindow,但是当回到应用程序时,alertView 动画仍然运行,就好像它只是解雇了。我怀疑上述延迟也是由于 Apple 在返回前台时如何处理 alertViews 而发生的。

我还尝试创建一个新窗口并将其设为新的 keyWindow,但同样的事情发生了。

这里有一个关于这个的小讨论,涵盖了我尝试过的所有东西,也许我在这篇文章中遗漏了一些东西。 https://github.com/rolandleth/LTHPasscodeViewController/issues/16

有什么想法吗?除了在我的应用程序中创建对每个 alertViewactionSheet 的手动引用,因为我试图找到密码库的修复程序,而不是我自己的应用程序;我可以找到肮脏的解决方法,没问题:)

更新:如果使用 actionSheet 而不是 alertView,则窗口为 _UIAlertOverlayWindow,但它的行为尽我所能告诉。

最佳答案

最简单的解决方案是使用锁屏窗口而不是锁屏 View 。

创建一个新的 UIWindow,将其框架设置为 UIScreen 边界,将一个简单的 rootViewController 放在那里,它应该处理旋转并显示你的“锁”屏幕” View 并将 windowLevel 设置为 UIWindowLevelAlert + 1

然后设置窗口的hiddenYES。每当您想显示锁屏时,只需将 hidden 设置为 NO

我猜想在显示弹出窗口/操作表以及显示键盘时向 keyWindow 添加 View 也不起作用(键盘在键窗口顶部有自己的窗口).

关于ios - UIAlertViews、UIActionSheets 和 keyWindow 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19816142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com