2

当应用程序暂停到后台时,我试图阻止 Apple 实现对当前屏幕内容的屏幕截图。我发现了一段可以工作的代码,但它有一个问题。它的作用是清除屏幕上的键窗口,因此当拍摄快照时,它是一个空白屏幕。这是该功能的代码片段:

- (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了吗?谁能指出我正确的方向?

谢谢

4

1 回答 1

3

刚刚制作了一个演示项目,并且能够重现您的问题。实际上,keyWindow应用程序的属性是nil何时applicationWillEnterForeground:被调用。

很多时候,你的应用程序的委托会引用它的窗口——这通常是许多应用程序的 Xcode 默认模板。我能够通过致电解决问题

self.window.hidden = NO;

而不是[UIApplication sharedApplication.keyWindow.hidden = NO;. 假设像大多数模板一样,您的应用程序委托具有窗口引用。

对我有用的另一种选择是调用[self.window makeKeyAndVisible];.

所有这些都是在 iOS 6 模拟器上完成的。

希望这可以帮助!

于 2012-09-27T17:29:55.807 回答