我正在尝试阻止Apple实现在应用程序暂停到后台时截取当前屏幕内容的屏幕截图。我发现了一段有用的代码,但它带有一个问题。它的作用是清除屏幕上的关键窗口,因此拍摄快照时,它是一个空白屏幕。这是功能的代码段:
- (void)applicationWillResignActive:(UIApplication *)application
{
[ UIApplication sharedApplication ].keyWindow.hidden = YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[ UIApplication sharedApplication ].keyWindow.hidden = YES;
}
上面代码的问题在于当应用程序返回到前台时,视图已经消失,因为它已经隐藏了,我无法用一个简单的取消隐藏它
[ UIApplication sharedApplication ].keyWindow.hidden = NO;
在app delegate的applicationWillEnterForeground方法中。一旦我将隐藏的视图隐藏在后台方法中,是否有人知道重新获得隐藏视图的方法?现在它是一个黑屏,因为视图已被隐藏。当你在去往背景然后回来之前隐藏一个键窗口时会发生什么。是不是关键窗口之前隐藏的关键窗口?有人能指出我正确的方向吗?
由于
答案 0 :(得分:2)
刚刚制作了一个演示项目,并且能够重现您的问题。实际上,当调用keyWindow
时,应用程序的nil
属性为applicationWillEnterForeground:
。
很多时候,您的应用程序的委托将引用其窗口 - 这通常是许多应用程序的Xcode默认模板。我可以通过调用
解决问题self.window.hidden = NO;
而不是[UIApplication sharedApplication.keyWindow.hidden = NO;
。假设与大多数模板一样,您的应用程序委托有一个窗口引用。
另一个对我有用的选择是致电[self.window makeKeyAndVisible];
。
所有这些都是在iOS 6模拟器上完成的。
希望这有帮助!