UIAlert需要几秒钟才能显示出来

时间:2011-12-09 10:12:51

标签: cocoa-touch uialertview timing

我遇到一个问题,我的应用中的所有UIAlertView都需要花费相当长的时间才能显示出来。显示屏立即变暗,但实际警报需要显示5秒钟。

我正在创建它们:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title"
                                                    message:@"Message"
                                                   delegate:nil 
                                          cancelButtonTitle:@"OK" 
                                          otherButtonTitles:nil];
[alertView show];
[alertView release];

有人有这个吗?

感谢
-f

2 个答案:

答案 0 :(得分:12)

如果你试图从主线程中显示UIAlertView NOT,你可以看到这种类型的延迟(有时,更严重的错误和崩溃)。

将代码作为单独的方法提取并使用“performSelectorOnMainThread”调用它,或者使用GCD并在那里调度它。

答案 1 :(得分:4)

那段代码后你在做什么?如果您进行一些计算并继续处理事情,则不会显示警报。它仅显示在runloop的末尾。处理此问题的最佳方法是将工作拆分为较小的块,一个接一个地执行,同时让runloop处理事件。或者将重物卸载到后台线程。

如果你想尝试什么,如果这确实是你遇到的问题,请尝试添加

 [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]];

就在上面的代码之下。