我需要这个代码块按顺序运行:
UIApplication.shared.beginIgnoringInteractionEvents()
loadDataTask.resume()
UIApplication.shared.endIgnoringInteractionEvents()
它在DispatchQueue.main.async()
内运行(每次网络通话都是我试图暂时阻止用户输入的原因)。我仍然在学习GCD概念的快速和挣扎。任何建议都将非常感谢。
答案 0 :(得分:2)
只需将endIgnoringInteractionEvents
调用放在loadDataTask
的完成处理程序中。
UIApplication.shared.beginIgnoringInteractionEvents()
let loadDataTask = session.dataTask(with: request) { data, response, error in
...
DispatchQueue.main.async {
// do all UI and model updates here
UIApplication.shared.endIgnoringInteractionEvents()
}
}
loadDataTask.resume()