UIAlertView滞后,留下暗淡效果,然后导致屏幕在iOS 6.1上闪烁

err*_*ran 17 objective-c ios6

我有一段时间没有触及这个代码,所以我想知道是否有任何明显的事情会导致我遇到的问题.

我在UIAlertView执行搜索查询后向用户显示.这很好用,直到我开始在iOS 6.1上测试(或者我正在使用的这个特定的iPad 2).现在,直到作为正常解雇UIAlertView,然后屏幕一直变暗几秒钟.

这似乎不是一个问题,除了一点滞后,直到我注意到我仍然可以触摸我的应用程序中的表视图,这导致屏幕闪烁发生.

代码在我的github上:ipwnstuff/shodan

lna*_*ger 23

确保您在主线程上显示(并以编程方式执行此操作)警报以及所有其他交互UIKit.最简单的方法是使用块:

dispatch_async(dispatch_get_main_queue(), ^{
    // Display/dismiss your alert
});
Run Code Online (Sandbox Code Playgroud)

  • 此外,如果在主线程上调用它,[NSThread mainThread]将返回YES.方便调试. (2认同)

ric*_*chy 7

使用lnafziger的答案我在主线程上显示alertView而不是解雇它.这也解决了这个问题.

[alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud)