2012-05-14 82 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