首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐藏KeyWindow以获取空白屏幕截图

隐藏KeyWindow以获取空白屏幕截图
EN

Stack Overflow用户
提问于 2012-09-28 00:32:09
回答 1查看 1.2K关注 0票数 2

我正在试图阻止苹果在应用程序挂起到后台时截取当前屏幕内容的实现。我找到了一段可以正常工作的代码,但它有一个问题。它所做的是清除屏幕上的键窗口,因此当拍摄快照时,它是一个空白屏幕。以下是该功能的代码片段:

代码语言:javascript
复制
- (void)applicationWillResignActive:(UIApplication *)application
{
    [ UIApplication sharedApplication ].keyWindow.hidden = YES;
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [ UIApplication sharedApplication ].keyWindow.hidden = YES;
}

上面代码的问题是,当应用程序返回到前台时,视图就消失了,因为它已经隐藏了,我不能用一个简单的

代码语言:javascript
复制
[ UIApplication sharedApplication ].keyWindow.hidden = NO;

在应用程序委托的applicationWillEnterForeground方法中。有没有人知道一种方法,一旦我在后台方法中隐藏了隐藏的视图,就可以重新获得它?现在它是一个黑屏,因为视图被隐藏了。当您在转到背景然后返回之前隐藏关键点窗口时,究竟会发生什么情况。你之前隐藏的keywindow不再是keywindow了吗?有谁能告诉我正确的方向吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-28 01:29:56

刚刚做了一个演示项目,并且能够重现你的问题。实际上,在调用applicationWillEnterForeground:时,应用程序的keyWindow属性为nil

很多时候,你的应用程序的代理都会引用它的窗口--这通常是许多应用程序的Xcode默认模板。我通过调用以下方法解决了这个问题

代码语言:javascript
复制
self.window.hidden = NO;

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

另一个对我有效的替代方法是调用[self.window makeKeyAndVisible];

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

希望这能有所帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12626017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档