我的应用程序处理敏感数据,我希望一旦用户进入后台,就会完全隐藏视图上显示的数据。我试图通过在所有其他视图上放置一个视图来实现这一点:
[self.window addSubview:self.someShieldView];
我也试过了,
[self topViewController].view.hidden = YES;
我在AppDelegate的
中这样做- (void)applicationDidEnterBackground:(UIApplication *)application
根据iPhoneAppProgrammingGuide.pdf
的建议.....当applicationDidEnterBackground:方法返回时, 系统会拍摄应用程序用户界面的图片并使用 转换动画的结果图像。如果您有任何意见 界面包含敏感信息,您应该隐藏或修改 applicationDidEnterBackground:方法之前的那些视图返回
但我仍然可以看到我的观点和数据几秒钟。如何确保我的视图隐藏在“盾牌”后面?
我跟着这篇文章,却无法实现我的目标。
Delay applicationDidEnterBackground screen capture
我可能做错了什么?
注意:一种替代方案不支持多任务处理,但我确实希望支持多任务处理。
答案 0 :(得分:1)
在一段时间之后我对这个确切的问题嗤之以鼻,我想我可能已经发现了什么。
您遇到的问题只发生在模拟器中。在物理设备上(我使用iphone5s测试)如果在applicationDidEnterBackground中隐藏视图,则临时屏幕捕获不会显示隐藏视图。
这是我的全部代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.window makeKeyAndVisible];
self.window.backgroundColor = [UIColor redColor]; // this is your secure content
return YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
self.window.hidden = YES; // this is where you will hide/mask your content
}