UIWebViewで最初にページをロードさせた時に、
ページの読み込みに失敗すると真っ白なページとなり、
”どのURLも表示していない”扱いとなる。
そうすると、
reloadメソッドを呼び出しても、
読み込むURLが無いことになり、無効となる。
これでは、
例えばreloadメソッドを呼び出すために
更新ボタンが用意してあっても
読み込みに失敗したユーザーは、
読み込み失敗からリカバリー出来ない、
残念なアプリケーションとなってしまう。
AppStoreで一般に配布されているアプリにも
実際にこの問題を抱えたものがある。
私の愛用している
とあるTwitterクライアントもそんなアプリの一つだ。
新聞記事のリンクをタップした時、
運悪くトンネルに入ると、
更新ボタンを押しても、もう再読み込みすることが出来ない。
この問題の対処は、
更新のメソッドで次のようにすることで対処可能である。
- (void)reloadWebView { if (webview) { if ([webview canGoBack]) { [webview reload]; } else { //最初に呼び出すのと同じページを読み込む処理 [self loadFirstPage]; } } }
戻る事ができる = 一回以上の遷移後
戻ることが出来ない = 最初のページまたは読み込みエラー
といえるため、
更新を実行するタイミングで
前のページに戻れない状態なら
最初のページを読み込む。
この記事はお役に立ちましたか?