警报不会立即出现 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()
}
确保您在主线程中显示 UIAlertView
。
dispatch_async(dispatch_get_main_queue(), {
let alert = UIAlertView()
alert.title = "Error"
alert.message = "Parser error."
alert.addButtonWithTitle("OK")
alert.show()
}
所有 UI activity 应该总是在主线程上执行,如果你不这样做你就不能确定它什么时候会被执行。这将导致您在问题中解释的行为。
据我所知,所有 UI 相关事件都需要在主线程上进行。这里看起来 XMLParserError
函数创建延迟以执行某些处理。
因此您需要在该方法中在主线程上显示警报。使用 dispatch_async
dispatch_async(dispatch_get_main_queue(),{
alert.show()
});
编辑: 更多解释:
UI 事件快速响应。使用户获得丰富的应用体验。因此,需要网络访问或一些复杂计算的冗长任务或事件需要在后台进行,因此如果您想在这种情况下编写代码,则必须在主线程中调用 UI 事件。
我在解析器出错时调用的方法中创建了一个警报。
警报工作正常,但在大约 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()
}
确保您在主线程中显示 UIAlertView
。
dispatch_async(dispatch_get_main_queue(), {
let alert = UIAlertView()
alert.title = "Error"
alert.message = "Parser error."
alert.addButtonWithTitle("OK")
alert.show()
}
所有 UI activity 应该总是在主线程上执行,如果你不这样做你就不能确定它什么时候会被执行。这将导致您在问题中解释的行为。
据我所知,所有 UI 相关事件都需要在主线程上进行。这里看起来 XMLParserError
函数创建延迟以执行某些处理。
因此您需要在该方法中在主线程上显示警报。使用 dispatch_async
dispatch_async(dispatch_get_main_queue(),{
alert.show()
});
编辑: 更多解释:
UI 事件快速响应。使用户获得丰富的应用体验。因此,需要网络访问或一些复杂计算的冗长任务或事件需要在后台进行,因此如果您想在这种情况下编写代码,则必须在主线程中调用 UI 事件。