2017-07-16 51 views
4

私はWebブラウザを作っています。他のすべてのWebブラウザと同様に、Webページが読み込まれなかったときに発生したエラーをユーザーに通知したいと思います。WKWebViewでdidFailProvisionalNavigationを正しく実装するにはどうすればよいですか?

現在、私はdidFailProvisionalNavigation方法に誤りのlocalizedDescriptionを表示しています。それで全部です!

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error 
{ 
    [self presentError:error.localizedDescription animated:YES]; 

    [_delegate webViewDidFailNavigation:self error:error]; 
} 

現在のエラーメソッドは、この質問に関係のないカスタムUIを扱います。

  1. インターネット接続がオフラインであることを表示されます。

    方法は、上記のような通常のエラーを表示するための優れた作品。

  2. 指定されたホスト名を持つサーバーが見つかりませんでした。

しかし、それはまたのようないくつかの異常なエラーが表示されます。

  1. 操作を完了できませんでした(NSURL ErrorDomainエラー-999)

私はこれが好きではありません方法の2つの理由:

  • エラーメッセージが表示されますいくつかの技術的なもの "NSURL"しかし、私はそれを無視することができます。
  • 上記のエラーが表示されているほとんどの場合、ほとんどの場合、Webページは完全に使用できますが、didFailProvisionalNavigationエラーであるため、ページが使用されなくなり、代わりにエラーが表示されます。

他の軽微なエラーが発生する可能性がありますが、私がそれらを処理しているようには処理しないでください。残念ながら、「Connectionがオフラインになっているような」と「操作を完了できませんでした」などの小さなエラーを区別する方法はわかりません。

ナビゲーションの失敗を処理する標準的な方法は何ですか?

答えて

0

代わりの

webView(_:didFailProvisionalNavigation:withError:) 

なぜあなたはこれを使用していませんか?

webView(_:didFail:withError:) 

ページがすでにレンダリングされていない場合は、コンテンツを表示し、次のページをロードしようとしているからサイトを妨げるエラーがあるときにだけ呼ばれるべきと思われます。

+0

最初の方法は、実際に想定されるように動作します。適切なタイミングですべてのURLエラーコードで応答します。 didFail:withError:メソッドは、ランダムな文字列 "iasdjfoaskfgo.com"でテストしたときに "ホストが見つかりません"というエラーで起動しませんでした。 – Vulkan

関連する問題