iOS:减少应用程序进入前台时 UIAlertView 显示的延迟

Posted

技术标签:

【中文标题】iOS:减少应用程序进入前台时 UIAlertView 显示的延迟【英文标题】:iOS: Decrease delay in UIAlertView show when app enters foreground 【发布时间】:2014-07-15 13:18:02 【问题描述】:

我创建了一个受密码保护的应用程序。该应用程序被允许在后台运行。 当它返回到前台时,我会通过覆盖 appdelegate 中的 applicationWillEnterForeground: 方法来显示提示用户输入密码的警报,就像这样-

- (void)applicationWillEnterForeground:(UIApplication *)application

    if (/*password is enabled*/)    
        alertview = [[UIAlertView alloc] initWithTitle:@"LOGIN"
                                               message:@"Enter app password"
                                              delegate:self
                                     cancelButtonTitle:nil
                                     otherButtonTitles:nil];
        alertview.alertViewStyle = UIAlertViewStyleSecureTextInput;
        pwdTF = [alertview textFieldAtIndex:0];
        [pwdTF setDelegate:self];
        [alertview show];
    


但是,警报需要一点时间才会出现。在此期间,视图仍然容易受到攻击。

有没有办法让 uialertview 立即显示?

【问题讨论】:

你可以尝试在主线程上显示警报。 Ashutosh,我是 ios 编程的新手。您能否提供一个链接或示例,说明当应用返回前台时如何在主线程上显示警报? 【参考方案1】:
dispatch_async(dispatch_get_main_queue(), ^
    <# Write UI related code to be executed on main queue #>
);

【讨论】:

感谢您的及时回复!如果我理解正确,在我的情况下,这个块将进入 'applicationWillEnterForeground:' appdelegate 方法,对吧? 像魅力一样工作!非常感谢!

以上是关于iOS:减少应用程序进入前台时 UIAlertView 显示的延迟的主要内容,如果未能解决你的问题,请参考以下文章

iOS应用程序从后台到前台时进入仪表板?

每次我的应用程序从后台进入前台时,IOS Default.png 都会显示 [重复]

iOS - 如何判断本地通知是不是导致我的应用程序进入前台?

当应用程序进入前台时检测远程通知

当应用程序进入后台时,应用程序在前台使用带有 GPU 的 CoreML 无法切换到 CPU

iOS 多任务处理:系统在进入后台时执行的减少