【问题标题】:applicationDidEnterBackground method not getting called neither did applicationWillResignActive when My application goes in the background iOS 7当我的应用程序进入后台 iOS 7 时,applicationDidEnterBackground 方法也没有被调用 applicationWillResignActive
【发布时间】:2014-03-03 04:46:52
【问题描述】:

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

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

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

复制步骤:

  1. 在您的应用程序的 appDidEnterBackground 方法中添加一个覆盖视图(可以说是白色)。
  2. 在 willEnterForeground 方法中添加用于删除覆盖视图的代码。
  3. 现在,运行您的应用程序。
  4. 按一次主页按钮。
  5. 按一次主页按钮后(在您的应用程序图标可见之前),单击主页按钮两次,以便您能够看到多任务视图。
  6. 您将在那里看到应用程序屏幕截图,而不是覆盖视图。

预期结果: 应该已经添加了 While 覆盖视图,您应该已经看到它而不是应用快照。

实际结果: 您可以在多任务视图中看到应用程序屏幕截图

版本: iOS 7 及以上版本

【问题讨论】:

  • 而不是-applicationDidEnterBackground:,将覆盖移动到-(void)applicationWillResignActive:
  • @staticVoidMan 我也尝试过这样做......但它没有帮助。这两种方法都没有被调用:(
  • hm...看来截图的事情一定是提前一秒发生的
  • 是的......当我再次启动应用程序时,委托方法被依次调用
  • 尝试类似的问题:link-1 ... link-2

标签: ios7 uiapplicationdelegate


【解决方案1】:

我创建了一个完全符合您要求的应用程序。我在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: 中摆脱它

- (void)applicationDidBecomeActive:(UIApplication *)application {
     // ...
     [self.shieldImageView removeFromSuperview];
     self.shieldImageView = nil;
     // ...
}

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 2013-03-09
    相关资源
    最近更新 更多