2012-05-14 6 views
1

webViewの停止リロードボタンを実装しようとしています。ここに私のコードは次のとおりです。webView stopLoading issue

- (IBAction)stopOrReloadButtonClick:(id)sender { 
    if (self.webView.loading) { 
     [self.webView stopLoading]; 
    } 
    else { 
     [self.webView reload]; 
    } 
} 

とデリゲートメソッド:

- (void)webViewDidStartLoad:(UIWebView *)webView { 
    if (indicator != nil && indicator.isAnimating == NO) { 
     [indicator startAnimating]; 
    } 
    [self.stopReloadButton setImage:[UIImage imageNamed:@"Stop.png"] forState:UIControlStateNormal]; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    [self.stopReloadButton setImage:[UIImage imageNamed:@"Refresh.png"] forState:UIControlStateNormal]; 
    [self setNavigationButtonsState]; 
    [indicator stopAnimating]; 
} 

あなたは次のような機能がある見ることができるように: のWebViewがすでにロードされたコンテンツを持っている場合、ボタンは「丸い矢印」です。 WebViewを押すと、現在のページがリロードされ、ボタン画像が「クロス」に変更され、リロードが停止されます。それを押すと、ページの再読み込みを停止する必要があります。 webViewの読み込みが終了すると、画像は再び「丸い矢印」に変わります。 WebViewがコンテンツを対応するデリゲートメソッドをロードしている間に「停止」を押すと問題になります。 - (void)webViewDidFinishLoad:(UIWebView *)webViewが呼び出されません。どうして ?どのようにそのような機能を実装するのですか?

答えて

2

このメソッドは、Webビューの読み込みが完了したときに呼び出されますが、キャンセルすると呼び出されることはありません。
だからあなたの方法は、うーん、stopLoading方法は、次に何をすべきか

- (IBAction)stopOrReloadButtonClick:(id)sender { 
    if (self.webView.loading) { 
     [self.webView stopLoading]; 
     [self.stopReloadButton setImage:[UIImage imageNamed:@"Refresh.png"] forState:UIControlStateNormal]; 
     [self setNavigationButtonsState]; 
     [indicator stopAnimating]; 

    } 
    else { 
     [self.webView reload]; 
    } 
} 
+0

ように変化しますか?私はそれがロードを停止し、webViewDidFinishLoadメソッドを呼び出す必要があると思った.... – Stas

+0

それは読み込みを停止し、読み込みを停止すると、読み込みが完了したことをどのように通知できるか(webViewDidFinishLoad).. –

+0

mmはい。 - WebViewが実際にロード要求を完了したときに、webViewDidFinishLoadが呼び出されました。 – Stas