iOS自动屏幕截图是在什么时候进行的?

5

我正在尝试更改iOS在应用程序进入后台时自动捕获的屏幕截图。

但是我不确定这个屏幕截图确切地是何时被拍摄的。

例如:

如果您在应用程序中下拉通知栏,将调用以下方法:

- (void) applicationWillResignActive:(UIApplication *) application {
}

如果您在应用程序中双击Home按钮,则会调用相同的方法。此外,如果显示警报视图,则会调用“applicationWillResignActive”。

但在这两种情况下

- (void) applicationDidEnterBackground:(UIApplication *) application {
}

这个方法不会被调用。

所以我的问题是,即使应用程序没有进入后台,applicationWillResignActive被调用后是否有截图被捕获?还是iOS只在applicationDidEnterBackground之后捕获截图?

4个回答

5

3

您可以查看此处,简要地说,在应用程序进入后台之前更改视图:


甚至可以直接前往主要来源:https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html - Tommy

1

是的。

- (void) applicationWillResignActive:(UIApplication *) application { }

当您下拉通知栏甚至双击主页按钮时,会调用此方法。您需要在此处执行某些操作,以防止操作系统捕获您的敏感信息。一种解决方法可能是:

  1. 在应用程序进入后台之前设置模糊屏幕叠加
  2. 一旦应用程序变为活动状态,就删除此叠加层

类似于这样:

-(void)applicationWillResignActive:(UIApplication *)application
{
    imageView = [[UIImageView alloc]initWithFrame:[self.window frame]];
    [imageView setImage:[UIImage imageNamed:@"blurryImage.png"]];
    [self.window addSubview:imageView];
}

在应用程序进入前台之前,请先移除此覆盖层:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if(imageView != nil) {
        [imageView removeFromSuperview];
        imageView = nil;
    }
}

那并没有回答我的问题。我知道applicationWillResignActive在这些情况下被调用。但是什么时候应用程序会截屏?是在applicationWillResignActive还是applicationDidEnterBackground中? - lostintranslation
好的,我明白了。请查看您的AppDelegate.m中由Apple提供的文档,您将找到答案。顺便说一下,要更精确,请使用applicationWillResignActive作为您问题的答案。 - nayem

0

在下拉通知栏或双击主页按钮时调用。您必须在此处执行某些操作,以防止操作系统捕获您的敏感信息。一种解决方法可能是:

在应用程序进入后台之前设置模糊的屏幕覆盖层。 一旦应用程序变为活动状态,删除此覆盖层。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接