繁体   English   中英

警报不会立即显示iOS

[英]Alert does not appear immediately iOS

我在解析器出错时调用的方法中创建了一个警报。

该警报可以正常运行,但是会在大约10秒钟后出现。 正如您在下面的方法中看到的那样,我放置了一个println(),它立即显示并在大约10秒钟后显示警报。

我的代码:

func XMLParserError(parser: ParserData, error: String) {
    println(error)
    print("Error parser")
    let alert = UIAlertView()
    alert.title = "Error"
    alert.message = "Parser error."
    alert.addButtonWithTitle("OK")
    alert.show()
}

据我所知,所有与UI相关的事件都必须在主线程上。 在这里看起来像XMLParserError函数创建延迟来执行一些处理。

因此,您需要使用此方法在主线程上显示警报。 使用dispatch_async

dispatch_async(dispatch_get_main_queue(),{
       alert.show()
});

编辑:更多说明:

UI事件快速且响应迅速。 使用户可以获得丰富的应用经验。 因此,需要网络访问或某些复杂计算的冗长任务或事件需要在后台进行,因此,如果您希望在这种情况下编写代码,则必须在主线程中调用UI事件。

确保在主线程中显示UIAlertView

   dispatch_async(dispatch_get_main_queue(), {
      let alert = UIAlertView()
      alert.title = "Error"
      alert.message = "Parser error."
      alert.addButtonWithTitle("OK")
      alert.show()
   }

所有UI活动都应始终在主线程上执行,如果不执行,则不能确定何时执行。 这将导致您在问题中解释的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM