当用户按下主页按钮但在应用程序进入后台之前,如何从应用程序窗口的 rootViewController 呈现 viewController? [复制]

Posted

技术标签:

【中文标题】当用户按下主页按钮但在应用程序进入后台之前,如何从应用程序窗口的 rootViewController 呈现 viewController? [复制]【英文标题】:How can I present an viewController from Application window's rootViewController when user press home button, but before application enter background? [duplicate] 【发布时间】:2014-02-20 16:48:35 【问题描述】:

我有一个包含一些敏感信息的应用程序,我不希望其他人在应用程序进入后台之前对屏幕进行快照,所以我想在用户按下主页按钮后在屏幕上呈现一个模式锁定视图控制器。我试过这段代码

- (void)applicationWillResignActive:(UIApplication *)application
    
    PatternLockViewController *pvc = [[SMICConfig sharedSMICConfig] patternLockVC];
    if (!(pvc.isViewLoaded && pvc.view.window) && [SMICConfig sharedSMICConfig].isCookie)    
    [self.window.rootViewController presentViewController:pvc animated:NO completion:nil];
     
   

但 PatternLockViewController 仅在应用程序进入前台后出现。因此,当应用程序处于后台时,您可以双击主页按钮来查看一些信息。

腾讯qq的图案锁定非常好。我只是想实现这个效果。

谁能帮帮我?谢谢

【问题讨论】:

【参考方案1】:

你可以通过调用ignoreSnapshotOnNextApplicationLaunchApple's documentation来告诉ios7在下一个启动周期避免使用最近的快照图像

以下是我为我的应用程序实现的方式。希望对您有所帮助。

- (void)applicationWillResignActive:(UIApplication *)application 
    [application ignoreSnapshotOnNextApplicationLaunch];
    self.imageView = [[UIImageView alloc]initWithFrame:[self.window frame]];
    [self.imageView setImage:[UIImage imageNamed:@"Default-568h"]];
    [self.window addSubview: self.imageView];


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

【讨论】:

ignoreSnapshotOnNextApplicationLaunch仅适用于iOS7及更高版本,如果我的目标是ios 6或之前,有没有办法处理这个问题? iOS6 没有多任务处理 :],我认为这是best question and answer,感谢您的解决方案 我的代码在我的物理设备上完美运行>_

以上是关于当用户按下主页按钮但在应用程序进入后台之前,如何从应用程序窗口的 rootViewController 呈现 viewController? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序进入后台时停止后台服务

当用户按下主页按钮时停止声音

退出应用程序后隐藏 UI [重复]

在下次运行之前以后台模式关闭应用程序[重复]

当我在 iOS 应用程序的后台任务(使用 GCD)中间按下 1 次主页按钮时,由于信号 9 而终止

以编程方式在iPhone 6中使用指导访问