我正在试图阻止苹果在应用程序挂起到后台时截取当前屏幕内容的实现。我找到了一段可以正常工作的代码,但它有一个问题。它所做的是清除屏幕上的键窗口,因此当拍摄快照时,它是一个空白屏幕。以下是该功能的代码片段:
- (void)applicationWillResignActive:(UIApplication *)application
{
[ UIApplication sharedApplication ].keyWindow.hidden = YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[ UIApplication sharedApplication ].keyWindow.hidden = YES;
}上面代码的问题是,当应用程序返回到前台时,视图就消失了,因为它已经隐藏了,我不能用一个简单的
[ UIApplication sharedApplication ].keyWindow.hidden = NO;在应用程序委托的applicationWillEnterForeground方法中。有没有人知道一种方法,一旦我在后台方法中隐藏了隐藏的视图,就可以重新获得它?现在它是一个黑屏,因为视图被隐藏了。当您在转到背景然后返回之前隐藏关键点窗口时,究竟会发生什么情况。你之前隐藏的keywindow不再是keywindow了吗?有谁能告诉我正确的方向吗?
谢谢
发布于 2012-09-28 01:29:56
刚刚做了一个演示项目,并且能够重现你的问题。实际上,在调用applicationWillEnterForeground:时,应用程序的keyWindow属性为nil。
很多时候,你的应用程序的代理都会引用它的窗口--这通常是许多应用程序的Xcode默认模板。我通过调用以下方法解决了这个问题
self.window.hidden = NO;而不是[UIApplication sharedApplication.keyWindow.hidden = NO;。假设像大多数模板一样,您的应用程序委托有一个窗口引用。
另一个对我有效的替代方法是调用[self.window makeKeyAndVisible];。
所有这些都是在iOS 6模拟器上完成的。
希望这能有所帮助!
https://stackoverflow.com/questions/12626017
复制相似问题