从多任务处理回来时,防止应用程序的快照视图

时间:2011-06-04 06:14:54

标签: iphone passwords screenshot multitasking

问题是这个 - 我的应用程序允许你密码保护自己。我使用的界面就像保护手机的密码一样。这一直很好,直到多任务出现。

密码保护仍然有效,但有一个问题。 Apple做了一些特别的事情,让它看起来像我们的应用程序在从后台返回时加载速度更快。操作系统在用户离开应用程序之前拍摄了我们的屏幕图片,并显示该应用程序的其余部分仍在加载。

这导致的问题是,有人试图访问我的应用程序会在密码保护启动之前看到屏幕图像。但是,这并不多,但我不认为我的用户会喜欢这个人的想法能够甚至一瞥他们的数据。

如何停止显示快照图像?

3 个答案:

答案 0 :(得分:15)

我解决了这个问题。这是解决方案:

- (void)applicationDidEnterBackground:(UIApplication *)application{
    if (appHasPasscodeOn){
        UIImageView *splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0, 320, 480)];
        splashView.image = [UIImage imageNamed:@"Default.png"];
        [window addSubview:splashView];
        [splashView release];
    }
}

Default.png是我的应用程序的屏幕截图,有一个空白屏幕(对我而言,它只是一个空白的列表视图)。上面的代码在应用程序进入后台之前将它放在我的真实视图前面。所以,当你回到应用程序时,就是你所看到的。瞧。

答案 1 :(得分:4)

标记的答案对我来说非常有效,只是当应用程序再次激活时,splashView会保留在屏幕上。我刚刚将它作为属性并将[splashView removeFromSuperview]添加到我的applicationWillEnterForeground中来修复它。如果其他人得到类似的行为。

答案 2 :(得分:1)

以下是Swift 3.0中的上述解决方案:

lazy var splashImageView: UIImageView = {
    let splashImageView = UIImageView(frame: UIScreen.main.bounds)
    splashImageView.image = UIImage(named: "splash-view")
    return splashImageView
}()

func applicationDidEnterBackground(_ application: UIApplication) {
    window?.addSubview(splashImageView)
}

func applicationWillEnterForeground(_ application: UIApplication) {
   splashImageView.removeFromSuperview()
}