当我的应用程序进入后台iOS 7时,applicationDidEnterBackground方法没有被调用applicationWillResignActive

时间:2014-03-03 04:46:53

标签: ios7 uiapplicationdelegate

我正在开发一个银行应用程序,当应用程序进入后台时(即单击主页按钮时),客户端要求不显示/保存屏幕快照。 我在后台方法中添加了一个叠加视图,并在app再次出现在前台时删除了该视图。当我单击主页按钮,等待1或2秒然后再次单击主页按钮两次时,它的工作完全正常。

我的问题是:如果我单击主页按钮一次,等待几毫秒(就在应用程序图标可见之前)然后再次单击主页按钮两次,然后屏幕快照可见(在多任务中)视图)。

当我分析问题时,我发现我的后台委托方法在这种情况下没有被调用,因此在这种情况下没有添加叠加视图。

重现步骤:

  1. 在应用程序的appDidEnterBackground方法中添加叠加视图(使用while颜色,可以说)。
  2. 在willEnterForeground方法中添加用于删除叠加视图的代码。
  3. 现在,运行您的应用程序。
  4. 按一次主页按钮。
  5. 在按下主页按钮一次之后(在应用程序图标可见之前),单击主页按钮两次,以便您可以看到多任务视图。
  6. 您可以在那里看到应用程序屏幕截图,而不是覆盖视图。
  7. 预期结果 应该添加While叠加视图,您应该看到而不是应用程序快照。

    实际结果 您可以在Multi tasker视图中看到应用程序屏幕截图

    版本: iOS 7及以上版本

1 个答案:

答案 0 :(得分:0)

我已经创建了一个完全符合您需求的应用。我在Everything Looks good: Derp Refresh UI1 Refresh UI2

中抛出了盾形图像视图
applicationWillResignActive:

并在- (void)applicationWillResignActive:(UIApplication *)application { // ... self.shieldImageView = [[UIImageView alloc] initWithFrame:self.window.frame]; self.shieldImageView.image = [UIImage imageNamed:@"shieldimage"]; self.shieldImageView.contentMode = UIViewContentModeScaleAspectFit; [self.window addSubview:self.shieldImageView]; // ... }

中删除它
applicationDidBecomeActive: