2012-05-14 2 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 завершит загрузку изображения, снова измените его на «закругленную стрелку». Таким образом, проблема заключается в том, что я нажимаю «stop», в то время как webView загружает содержимое соответствующего метода делегата - (void) webViewDidFinishLoad: (UIWebView *) webView не вызывается. Зачем ? И как реализовать такую ​​функциональность?

ответ

2

Этот метод вызывается, когда веб-представление закончило загрузку, но вы отменяете его, и он не будет вызван.
Так изменить свой метод как

- (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

мм yes..youre the right - не думал о том, что webViewDidFinishLoad вызывается, когда webView действительно заканчивает загрузку запроса – Stas

Смежные вопросы