6

当前台应用程序进入后台时(例如按下 Home 按钮),在 iOS 拍摄它的快照并启动动画以显示下一个屏幕之前,我如何更改最顶层视图控制器上的元素?

我问是因为我正在编写一个需要 HIPAA 合规性的应用程序,并且我担心操作系统为执行此动画而拍摄的快照有时包含敏感数据,即使稍后应用程序被前景化时,这些数据也不应该是可见的.

我知道视图控制器具有生命周期方法,例如viewWillDisappear可能可用的方法,但我有很多控制器,我宁愿在我的 App Delegate 中有一些东西来处理这个问题(例如,通过添加不透明的全屏 UIImageView 覆盖) 而不必在每个最后一个控制器中为此编写自定义代码。

我尝试将覆盖生成代码放入 中applicationWillResignActive,并且我一直在使用 Apple 的文档和 Google 进行挖掘,但它不起作用。我怀疑屏幕截图是在应用程序有机会更新屏幕之前拍摄的。

谢谢!

4

2 回答 2

4

不确定 HIPAA 关于后台的要求以及可能让用户登录以供其他人恢复,但听起来最安全的方法是添加UIApplicationExitsOnSuspend一个布尔值为YESto的键info.plist

这将阻止应用程序完全后台运行,并在您每次返回时重新启动它(可能触发登录过程)。

出于安全原因,我测试过的大多数(如果不是全部)移动银行应用程序都是这样做的。

于 2012-09-25T18:50:37.970 回答
2

我相信答案是不关心在背景动画开始之前改变屏幕上的内容,而是简单地修改应用程序进入背景后屏幕上显示的内容(即applicationDidEnterBackground:在你的 App Delegate 中)。这解决了我的问题.

我的UIImageView叠加想法在这里奏效了,尽管我决定只弹出到根视图控制器。这样更简单。我的根视图没有任何敏感信息。

这是它的样子:

-(void)applicationDidEnterBackground:(UIApplication *)application {

    UINavigationController *navigationController = 
        (UINavigationController *)self.window.rootViewController;
    [navigationController popToRootViewControllerAnimated:NO];

    ...
}
于 2012-09-27T00:26:37.953 回答