- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我创建了一个 iOS 7 passcode replica我有这个问题,我似乎无法解决。我需要将锁定屏幕 View 置于其他所有内容之上,因此该应用程序包含在 iOS 的多任务 View 中,因此我将其直接添加到 keyWindow
。到目前为止一切都很好。
如果有一个 alertView
或 actionSheet
(为了简单起见,在这篇文章中只会提到 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
有什么想法吗?除了在我的应用程序中创建对每个 alertView
和 actionSheet
的手动引用,因为我试图找到密码库的修复程序,而不是我自己的应用程序;我可以找到肮脏的解决方法,没问题:)
更新:如果使用 actionSheet
而不是 alertView
,则窗口为 _UIAlertOverlayWindow
,但它的行为尽我所能告诉。
最佳答案
最简单的解决方案是使用锁屏窗口而不是锁屏 View 。
创建一个新的 UIWindow
,将其框架设置为 UIScreen
边界,将一个简单的 rootViewController
放在那里,它应该处理旋转并显示你的“锁”屏幕” View 并将 windowLevel
设置为 UIWindowLevelAlert + 1
。
然后设置窗口的hidden
为YES
。每当您想显示锁屏时,只需将 hidden
设置为 NO
。
我猜想在显示弹出窗口/操作表以及显示键盘时向 keyWindow
添加 View 也不起作用(键盘在键窗口顶部有自己的窗口).
关于ios - UIAlertViews、UIActionSheets 和 keyWindow 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19816142/
我正在创建一个越狱调整,向 UIWindow 添加一个 View ,无论当前的 keyWindow 是什么。问题是每当 keyWindow 发生变化时, View 就会被删除。 我在用这个 %hook
从 Xcode 10.3.1 升级到 Xcode 11.1 后,我在所有 UIView 上添加的自定义事件指示器消失了。它被添加到 keyWindow 中,如下所示: UIApplication.sh
我用keyWindow添加了一个subView,添加成功但是没有显示在screen hierarchy的最前面。 深灰色 View 是我添加的 View : 我的代码是: @interface Vie
我一直在使用 [[UIApplication sharedApplication] keyWindow] 以 UIView 的形式获取屏幕的可见 View 。然后,我将该 View 转换为要使用的 U
问题:我有一个窗口 mainWindow 和另一个添加到 mainWindow 的 childWindow 。childWindow 是一种 WindowExt 类。我为 catch 方法调用定义了这
我正在尝试测试(使用 XCTest 框架)驻留在框架(动态库)内的 View Controller 。我遇到了属性 UIApplication.sharedApplication().keyWindo
我试图阻止 Apple 在应用挂起进入后台时截取当前屏幕内容的实现。我找到了一段可以工作的代码,但它有一个问题。它所做的是清除屏幕上的键盘窗口,因此在拍摄快照时,它是一个空白屏幕。这是该功能的代码片段
我正在设计一个具有“封面 View ”功能的 iOS 密码锁库,当应用程序处于后台时,它会隐藏屏幕上的内容。看这个image . 当我的 PasscodeManager 收到 UIApplicatio
我在 iPad 上使用 cocos2d,我正在使用 ccviewcontroller 类来帮助集成 UIKit 和 cocos2d。我已经设置了一个 Storyboard并有一个初始 View Con
我正在为我的应用开发同步功能。 我想要实现的是显示一个自定义的 UIView,它将作为用户的指示器,无论用户在什么屏幕上(例如导航到仪表板、设置、配置文件页面等),同步正在进行中.短期内,它将静态地固
我需要在我的应用程序的共享扩展中访问 keyWindow - 添加一些指标 View - 获取窗口的宽度和高度 我在共享扩展类中写了以下行: UIWindow *mainWindow = [[UIAp
我想将我的 UIView 中的 CGPoint 转换为 UIWindow 坐标,并且已经意识到 UIApplication keyWindow 始终为 nil;这是为什么? 我尝试了 UIView 中
我正在尝试加载选项卡栏顶部的 View (带有日期选择器),该选项卡栏作为 subview 加载到我的应用程序委托(delegate)文件中。 我这样做: [[[UIApplication share
在某些情况下,[[ UIApplication sharedApplication] keyWindow ] 返回 nil。 在某些设备上,这种情况经常发生,但总体来说是零星的 有人知道它返回零的原因
我通过调用显示我的主窗口 [window makeKeyAndOrderFront:self]; [NSApp activateIgnoringOtherApps:YES]; [window setI
我已将 View 添加到 [[UIApplication sharedApplication] keyWindow] ,因为我们希望它与导航栏重叠。 现在我们想点击 View 上的一个按钮并以模态方式
在我的应用程序中的某个时刻,我需要返回到我的主(即主页)ViewController。所以我需要向后移动到我的导航堆栈,它现在充满了 ViewControllers 和 NavigationContr
我想在启动后测试我的应用委托(delegate)制作窗口作为关键窗口。所以我编写了以下测试。 - (void)setUp { window = [[UIWindow alloc] init];
我在 iPad 上的应用程序 keyWindow 出现问题。 我为 iPhone 设计了我的应用程序,稍后通过设置设备系列和为 iPad 添加新的 Storyboard来添加 iPad 支持。到目前为
启动时,我的应用会检查更新。如果可用,我会尝试使用以下指令将叠加 View 相互叠加: [[[UIApplication sharedApplication] keyWindow] addSubvie
我是一名优秀的程序员,十分优秀!