我有一个在iOS 7上正常运行的相机应用。在我viewDidAppear
的{{1}}调用中,我首先检查应用程序状态是否处于非活动状态且应用程序不在后台。
代码示例如下所示。
MainViewController
我的问题是在iOS 8 beta 2 -(void) viewDidAppear
{
if ((UIApplicationStateBackground != [UIApplication sharedApplication].applicationState)
&& (UIApplicationStateInactive != [UIApplication sharedApplication].applicationState))
{
// check if the camera is running
// perform the animation of opening shutter.
}
}
返回[UIApplication sharedApplication].applicationState
因此检查失败。但是在iOS 7 UIApplicationStateInactive
上返回[UIApplication sharedApplication].applicationState
并且没有任何问题。
还有其他人遇到过同样的问题吗?
修改
在xcode 6中将断点放在UIApplicationStateActive
和viewDidAppear
中的简单实验表明,appDidBecomeActive
首先被调用。我想它是iOS 8中的一个错误
答案 0 :(得分:4)
除非应用处于有效状态,或者至少变为活动状态,否则您的视图无法显示。视图不会在应用处于非活动状态或后台时显示。如果我是你,我会完全删除这个条件。它从未提供任何有用的功能。
(顺便说一下,如果您在发布时遇到这种情况,您所遇到的声音就像我以另一种形式向Apple报告的问题:在iOS 8中,该应用程序在整个界面启动并运行之后,不会切换到活动状态(以便application:didBecomeActive:
触发),直到非常延迟井。这导致我必须重写我的很多代码。例如,如果使用我的根视图控制器viewDidAppear:
注册applicationDidBecomeActive
通知,我很快就会收到该通知 - 这是坚果。)