2012年3月17日土曜日

UIWebViewのエラー処理

UIWebViewをさわっていたのですが、エラー処理で詰まってしまいました。

デリゲートメソッドwebView:didFailLoadWithError:にエラー処理(アラート表示)をいれたのですが、stopLoadingで読み込みをキャンセルした場合もこれが呼ばれてしまう。


さぁ困ったぞ、と1日経って良く見てみたら、NSErrorでエラー内容が取れるではないかと。
このリファレンスの「URL Loading System Error Codes」という項目にNSURLErrorDomainのエラー一覧があります。
NSURLErrorCancelledのときはアラート表示をしないという処理で大丈夫そうです。

以下ソース。
// エラー
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    LOG(@"UIWebView: error");
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    
    // stopLoadingでキャンセルされた場合はアラートを表示しない
    if (!(   [error.domain isEqualToString:NSURLErrorDomain]
          && error.code == NSURLErrorCancelled)) {
        // アラート表示
        [self showAlert];
    }
    
    [self updateButtonStatus];
}
できました。良さそうです。

0 件のコメント:

コメントを投稿