我正在制作网络浏览器,并且像其他所有网络浏览器一样,我想告知用户网页加载失败时发生的错误。
目前,我正在 didFailProvisionalNavigation 方法中显示错误的 localizedDescription 。这就是全部!
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error
{
[self presentError:error.localizedDescription animated:YES];
[_delegate webViewDidFailNavigation:self error:error];
}
presentError方法处理一些与问题无关的自定义UI内容。
上述方法非常适合显示常见错误,例如:
但它也会显示一些不寻常的错误,例如:
我不喜欢这种方法有两个原因:
我不知道可能发生的其他小错误应该按照我处理它们的方式处理。不幸的是,我不知道如何区分主要错误,如“连接似乎脱机”和轻微错误,如“操作无法完成”。
处理导航失败的标准方法是什么?
答案 0 :(得分:0)
而不是
webView(_:didFailProvisionalNavigation:withError:)
为什么不使用它?
webView(_:didFail:withError:)
似乎只应在出现阻止网站显示内容的错误时调用,而不是在页面已经呈现并尝试加载下一页时调用。
答案 1 :(得分:0)
我也需要使用didFailProvisionalNavigation。现在,我这样解决了这个问题:
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(nonnull NSError *)error
{
if(error.code != -999) // Prevent the error from showing when didFailProvisionalNavigation is triggered after a cancelled load (reload)
{
// Show the error
}
}