0

我有这样的设置;

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 秒之间)后消失。

如何让请求立即导致视图被隐藏?

4

4 回答 4

3

将您的与 UI 相关的登录包装在 dispatch async 中并在主线程上运行:

dispatch_async(dispatch_get_main_queue(),{

    self.view.hidden = true;

 })
于 2016-02-08T09:38:29.383 回答
3

试试这个,在主线程上调用隐藏。

dispatch_async(dispatch_get_main_queue(),{
   self.view.hidden = true;
})
于 2016-02-08T09:39:27.613 回答
3

重写你的hide方法如下。您只需要在主线程上更新 UI。

func hide() -> GCDWebServerDataResponse {
    dispatch_async(dispatch_get_main_queue(),{
        self.view.hidden = true
    })
    print("hide")
    return GCDWebServerDataResponse(statusCode: 200)
}
于 2016-02-08T09:40:09.683 回答
3

UI 更新代码只写在主线程中。

 dispatch_async(dispatch_get_main_queue(),{

        self.view.hidden = true;

     })
于 2016-02-08T09:45:48.357 回答