2012-03-06 7 views
5

シンプルなコンセプトですが、動作しません。 UIWebViewに2つのボタン、戻るボタン、進むボタンがあります。戻るボタンは[self.webView GOBACK]と前方[self.webView goForward]を呼び出します。 UIWebViewが戻って行くことができればiOS - webViewDidStartLoadのcanGoForwardとcanGoBackの問題

は今、私は基本的に知りたいです。その場合は、戻るボタンを有効にして元に戻し、前へボタンにも戻します。

-(void)webViewDidStartLoad:(UIWebView *)webView 
{  
    if([self.webView canGoForward]) { 
     [forwardArrowBtn setEnabled:YES]; 
    } else { 
     [forwardArrowBtn setEnabled:NO]; 
    } 

    if([self.webView canGoBack]) { 
     [backArrowBtn setEnabled:YES]; 
    } else { 
     [backArrowBtn setEnabled:NO]; 
    } 
} 

問題は、最初の読み込みでは機能しません。たとえば、UIWebView内のリンクをクリックすると、そのページに移動しますが、戻るボタンは無効でクリックできません。別のリンクをクリックするまでは、戻るボタンが有効になっていて、作業を開始します。これはあなたが別のページに移動し、唯一の二度目の作品を初めて動作しませんどのように来る

答えて

12

私はwebViewDidStartLoadだけでなく、ボタンの設定コードを置くことで、この問題を解決しました。メソッドを記述し、webViewDidStartLoad、webViewDidFinishLoad、およびshouldStartLoadWithRequestからメソッドを呼び出します。私のアプリと完璧に動作します。あなたの最初のページには、お使いのデバイス上で実際のWebの場所やファイル

+0

もっと単純な解決法ではこれが回避できますか?しかし、それは動作します... – Romes

+0

あなたは、ショーをすることができますか? – Morkrom

+0

'webViewDidFinishLoad:'は、チェックのための正しい場所です。この問題は、WebKitのバグであるようです。詳細な説明は、[http://stackoverflow.com/questions/18948373/why-is-uiwebview-cangoback-no-in-ios7 this SO質問と回答]を参照してください。 – Olie

3

ですか?私はloadHTMLStringから始めているときにこの問題を抱えています。これは本当に何も戻っていないからです(私はUIがページの内容をキャッシュしないと仮定しています。私がloadRequestを使って作業しているとき、うまく動作します。つまり、あなたはAemsnが述べたようにする必要があります。良いチュートリアルはthis linkにあります。

webViewDidStartLoadが前呼び出されるあなたが実際に次のページをロードします。それだけで二度目の働く理由を「ベース」の質問に答えるために、ランダムなウェブ検索をしながら

1

はここに来ました。あなたがやっていることに対して、webViewDidFinishLoadはもっと理にかなっています。だから、あなたがあなたの最初の荷物を運ぶとき、あなたは戻ることができません。最初にページを変更しても、まだ1ページ(現在)だけが読み込まれます。したがって、2回目以降は動作するように見えます。

0

私はまったく同じ問題を持っていたし、私はそれを考え出しました。あなたはwebView:loadRequest:セレクタを使ってWebコンテンツをロードしていないと思いますか?代わりに、おそらく webView:loadData:MIMEType:textEncodingName:baseURL:またはloadHTMLString:baseURL:セレクタを使用しました。

これはまさに私がやったことです。代わりにwebView:loadRequest:セレクタを使用すると、動作します - 少なくとも私のためでした。

関連する問題