2012-12-13 12 views
6

UIWebViewの代理人がこのようなエラーを返す間に発生した問題を回避しようとしています。私は私が持っている問題は、これは常に働くていないということですNSWRLErrorDomainエラー-999を無視してもUIWebViewでは機能しません

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

    if ([error code] == NSURLErrorCancelled) return; 
} 

私のデリゲートの実装では(私はどこでもインターネットでそれを見た)一般的な回避策があります。時にはウェブをロードし、別の時間にウェブの一部(ヘッダー、テキストの一部)をロードし、何度か何もロードしません。

他に解決策はありますか?正しく動作するブラウザのオープンソースの実装が存在するかどうかアップルのドキュメントから

+0

ロードが失敗した場合に発生するエラーを調べる必要があります。 –

+0

@PhillipMills常に同じです、NSURLErrorDomainエラー-999 – emenegro

+0

あなたは何を避けようとしていますか?実際にはあなたのコードは何もしませんでしたが、NSURLErrorCancelledに等しいかどうかに関わらず関数は返されます。 – howanghk

答えて

10

NSURLErrorCancelled(-999)

「非同期ロードがキャンセルされたときに返されることが負荷にキャンセル操作を行ったときのWeb Kitフレームワークのデリゲートは、このエラーを受け取ります。ダウンロードがキャンセルされた場合、NSURLConnectionまたはNSURLDownloadデリゲートはこのエラーを受け取らないことに注意してください。

これは、最初に要求が完了する前に要求をロードし、別のもの(または同じもの)をロードする可能性が最も高い場合があります。これは起こり得る。たとえば、viewDidAppear:のように複数回呼び出すことができる方法でloadRequest(またはloadHTMLString)と呼び出した場合、これはまた、UIWebViewの2つのリンクをすばやくタップすると発生すると報告されています。

したがって、loadRequest(またはloadHTMLString)と電話する方法と場所を確認し、場合によってはコードを入力することをおすすめします。

これを解決するために、私はあなたのWebビューのデリゲートに次のトレースを追加することをお勧め:

- (void)webViewDidStartLoad:(UIWebView *)webView { 
     NSLog(@"Starting to download request: %@", [webView.request.URL absoluteString]); 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
     NSLog(@"Finished downloading request: %@", [webView.request.URL absoluteString]); 
} 

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

    if ([error code] == NSURLErrorCancelled) 
     NSLog(@"Canceled request: %@", [webView.request.URL absoluteString]); 
} 

あなたは出力を検査した場合、あなたは何が起こっているかをより明確に表示されるはずです。出力を貼り付けると、さらに手伝ってくれるでしょう。

2

ほとんどの場合、NSURLConnectionまたはUIWebViewを使用しているとき、このエラーはタイムアウトが原因です。 本当にあなたのコードではなく、あなたの接続可能性があります。

関連する問題