WillEnterForeground无法正常工作吗?

时间:2013-06-13 18:54:27

标签: iphone ios xamarin.ios

我的iOS应用程序要求如果您暂停应用程序一段时间(例如一小时),我们希望应用程序将返回到之前的位置,但到主屏幕。我们的想法是深入了解应用程序,查找内容,然后忘掉它。一小时后,当您再次需要应用程序时,您之前所做的事情无关紧要,我们只想在主屏幕上再次自动启动。

我已经使用DidEnterBackgroundWillEnterForeground实现了这一点,它几乎完美无缺。当应用程序进入后台时,我会写一个时间戳。当它恢复时,我将时间戳与当前时间进行比较,如果大于1小时的窗口,我会弹出ViewController堆栈中的所有内容,其中animation = false,我们就回家了。

这适用于iPad和所有模拟器,但在我的iPhone上,它在回家之前显示前一个屏幕只有几分之一秒,即使 WillEnterForeground出现在它之前是可见的,它在没有动画的情况下弹出堆栈,所以不应该是可见的。这是怎么回事?

1 个答案:

答案 0 :(得分:4)

这是因为iOS在为应用程序设置背景之前故意拍摄窗口的快照,然后在恢复时显示它,以给人一种快速接口的印象。来自Apple的文档here

  

当应用程序转换为后台时,系统会拍摄快照   应用程序的主窗口,然后它简要介绍   将您的应用程序转换回前台。在返回之前   你的applicationDidEnterBackground:方法,你应该隐藏或模糊   密码和其他敏感的个人信息   作为快照的一部分被捕获。

所以答案是删除或以某种方式消除applicationDidEnterBackground中的视图(例如,将根视图的alpha设置为0.0),这样您就可以决定是否应该显示它试。