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 回答