UIWebViewで最初に読み込みに失敗するとreloadで更新・再読み込みが出来なくなる

 

UIWebViewで最初にページをロードさせた時に、
ページの読み込みに失敗すると真っ白なページとなり、
”どのURLも表示していない”扱いとなる。

そうすると、
reloadメソッドを呼び出しても、
読み込むURLが無いことになり、無効となる。

これでは、
例えばreloadメソッドを呼び出すために
更新ボタンが用意してあっても
読み込みに失敗したユーザーは、
読み込み失敗からリカバリー出来ない、
残念なアプリケーションとなってしまう。

AppStoreで一般に配布されているアプリにも
実際にこの問題を抱えたものがある。
私の愛用している
とあるTwitterクライアントもそんなアプリの一つだ。
新聞記事のリンクをタップした時、
運悪くトンネルに入ると、
更新ボタンを押しても、もう再読み込みすることが出来ない。

この問題の対処は、
更新のメソッドで次のようにすることで対処可能である。

- (void)reloadWebView
{
    if (webview) {
        if ([webview canGoBack]) {
            [webview reload];
        } else {
            //最初に呼び出すのと同じページを読み込む処理
            [self loadFirstPage];
        }
    }
}

戻る事ができる = 一回以上の遷移後
戻ることが出来ない = 最初のページまたは読み込みエラー
といえるため、
更新を実行するタイミングで
前のページに戻れない状態なら
最初のページを読み込む。

この記事はお役に立ちましたか?


コメント

コメントする