【发布时间】:2017-02-20 15:38:33
【问题描述】:
每次我尝试在 UIWebView 上加载另一个 URL 时,我都会遇到同样的错误:
SendDelegateMessage(NSInvocation *): 委托 (webView:decidePolicyForNavigationAction:request:frame:decisionListener:) 等待 10 秒后返回失败。
我关于 webView 的代码是这样的:
@IBAction func changeUrl(sender: UIButton) {
if LEDON {
let urlStr = NSString(format: "%@/?Led=0", self.url)
let req = URLRequest(url: URL(string: urlStr as String)!)
webView.loadRequest(req)
while(webView.isLoading) {
sender.isEnabled = false
}
sender.isEnabled = true
LEDON = false;
} else {
let urlStr = NSString(format: "%@/?Led=1", self.url)
let req = URLRequest(url: URL(string: urlStr as String)!)
webView.loadRequest(req)
while(webView.isLoading) {
sender.isEnabled = false
}
sender.isEnabled = true
LEDON = true;
}
}
如果我第一次按下 UIButton 代码可以完美运行,但是当我再次点击它时,我得到了那个错误。 我哪里做错了?
代码中的“url”变量是一个全局变量,我已经检查过它是正确的。
【问题讨论】:
-
你不需要使用这个 while(webView.isLoading) {sender.isEnabled = false}。您已冻结主线程,应用程序无法响应任何请求。您需要为此使用委托方法。
-
但是当 while 循环完成时,发送方再次处于活动状态。当我再次调用该操作时,webView 不会加载,但按钮可以工作。