2011-08-12 11 views
3

私はAppleのUIWebViewDelegateに記載されていないこの動作を見ています:delegated関数shouldStartLoadWithRequestでNOを返した後didFailLoadWithErrorが通常呼び出されますか?

私は

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 

デリゲート関数にNOを返す場合、この関数はすぐにエラー101(このURLをロードすることはできません。)と呼ばれていません。

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 

私はリクエストを明示的にキャンセルしたので、didFailLoadWithErrorが呼び出されるのは正常ですか?

答えて

2

更新:手動で接続をキャンセルすると、UIWebViewはdidFailLoadWithErrorを呼び出しません。

私はテストでこれを確認しました。なぜdidFailLoadWithErrorは、UIWebViewに完全に無関係の何かのためのものです。

+0

これは私の問題でした。帰還NOは実際に呼ばれなかった。 WebKitはwebView:decidePolicyForNavigationAction:request:frame:decisionListener:delegate: ***の中で未知の例外を破棄しました。*** ***認識できないセレクタがインスタンス0x866c490に送信されました。 –

0

いつでもno shouldStartLoadWithRequestを返す必要があります。ウェブビューでコンテンツの読み込みを開始する場合は、YESを返してください。あなたの接続がエラー101(ネット:: ERR_CONNECTION_RESET)がある場合はそれ以外の場合は、NO

は:不明なエラーが発生し、その後、あなたは多分、これらを経験している:

You are trying to connect to the internet but the pages won’t load. 
You are trying to refresh/reload the page so many times but to no avail. 
You can see a lot of weird stuff all over the page. (links and images are unaligned.) 
When the page doesn’t load, you can see the phrase “Error 101 (net::ERR_CONNECTION_RESET): Unknown error”. 

あなたは常にあなたのデリゲートにして、要求を処理する必要がありますし、 return NO次にNSURLConnectionからの受信した応答コールで接続をキャンセルし、すべてがうまくいれば(応答を確認する)、Webビューでもう一度urlrequestをロードします。上記の呼び出しでurlrequestを再度ロードするときには、必ずYESを返します。 を使用するか、同期メソッドまたは非同期メソッドを使用して処理できます。

+0

私はすでにそれを知っています。 shouldStartLoadWithRequestにNOを返すとdidFailLoadWithErrorが呼び出されるかどうかを尋ねています。ありがとう。 – futureelite7

+0

私の答えを編集しました。 –

関連する問題