1

webView の再読み込み停止ボタンを実装しようとしています。これが私のコードです:

- (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 が呼び出されないことです。なんで ?そして、そのような機能を実装する方法は?

4

1 に答える 1

2

このメソッドは、Web ビューの読み込みが完了したときに呼び出されますが、キャンセルすると呼び出されません。
したがって、メソッドを次のように変更します

- (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];
    }
}
于 2012-05-14T09:04:16.767 に答える