2012-05-14 83 views
1

我正在尝试为webView实现stop-reload按钮。这里是我的代码:webView stopLoading问题

- (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]; 
} 

正如你所看到的功能如下: 如果web视图已加载内容的按钮是“圆箭头”。如果按下webView重新加载当前页面并将按钮图像更改为“交叉”,则意味着停止重新加载。如果按下它应该停止重新加载页面。当webView完成将图像更改再次加载到“圆角箭头”时。 所以问题是,如果我按下“停止”,而webView加载内容通讯员委托方法 - (无效)webViewDidFinishLoad:(UIWebView *)webView不会被调用。为什么?以及如何实现这样的功能?

回答

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]; 
    } 
} 
+0

嗯,什么stopLoading方法怎么办呢?我认为它应该停止加载和调用webViewDidFinishLoad方法.... – Stas

+0

它停止加载,因为它说停止加载,那么它如何通知你,它已完成加载(webViewDidFinishLoad).. –

+0

毫米是的..你是对的 - 没有考虑到webViewDidFinishLoad在webView真正完成加载请求时被调用 – Stas