3

我的 iOS 应用程序有一个要求,如果您将应用程序暂停一段时间(比如一小时),我们希望应用程序不会返回您之前的位置,而是返回到主屏幕。这个想法是你深入到应用程序,查找一些东西,然后忘记它。一个小时后,当您再次需要该应用程序时,您之前所做的一切都无关紧要,我们只想在主屏幕上再次自动启动。

我已经用DidEnterBackgroundand实现了这个WillEnterForeground,它几乎可以完美地工作。当应用程序进入后台时,我会写一个时间戳。当它恢复时,我将时间戳与当前时间进行比较,如果大于 1 小时窗口,我将所有内容从 ViewController 堆栈中弹出,动画=false,我们就到家了。

这适用于 iPad 和所有模拟器,但在我的 iPhone 上,它会在回家之前显示上一个屏幕一小部分时间,即使 WillEnterForeground它在它应该可见之前出现,并且它在没有动画的情况下从堆栈中弹出,所以应该不可见。这里发生了什么?

4

1 回答 1

4

这是因为 iOS 在后台处理您的应用程序之前故意对窗口进行快照,然后在恢复时显示它,以给人一种界面更快捷的印象。来自 Apple的文档:

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

所以答案是删除或以某种方式使视图空白applicationDidEnterBackground(例如,通过将根视图的 alpha 设置为 0.0),这样您就可以决定恢复它是否应该再次显示。

于 2013-06-13T22:15:56.880 回答