我有这样的设置;
startup() {
...
self.gcdWebServer.addHandlerForMethod("GET", path: "/hide",
requestClass: GCDWebServerRequest.self, asyncProcessBlock: {request in self.hide()})
...
}
func hide() -> GCDWebServerDataResponse {
self.view.hidden = true;
print("hide")
return GCDWebServerDataResponse(statusCode: 200)
}
当向/hide
发出请求时,控制台会立即显示print()
来电,但视图不会因任意延迟而消失,大约在10-30秒之间。
如何让请求立即导致视图被隐藏?
答案 0 :(得分:3)
在调度异步中包装与UI相关的登录并在主线程上运行它:
dispatch_async(dispatch_get_main_queue(),{
self.view.hidden = true;
})
答案 1 :(得分:3)
尝试这个,在主线程上调用hidden。
dispatch_async(dispatch_get_main_queue(),{
self.view.hidden = true;
})
答案 2 :(得分:3)
重写您的hide
方法,如下所示。
您只需要在主线程上更新UI。
func hide() -> GCDWebServerDataResponse {
dispatch_async(dispatch_get_main_queue(),{
self.view.hidden = true
})
print("hide")
return GCDWebServerDataResponse(statusCode: 200)
}
答案 3 :(得分:3)
UI更新代码仅在主线程中写入。
dispatch_async(dispatch_get_main_queue(),{
self.view.hidden = true;
})