要做的需求是在一个webview加载之前显示“加载中”的view,等webview加载完毕以后移除该view,并加载webview。

利用

  1. -(void)webViewDidStartLoad:(UIWebView *)webView
  2. {
  3.     NSLog(@"start");
  4. }
  5. -(void)webViewDidFinishLoad:(UIWebView *)webView
  6. {
  7.     NSLog(@"end");
  8. }

方法来做,实际测试时发现start和end出现了多次,很奇怪。

后来调研了下,发现如果网页内有异步请求或者重定向时,就会多次调用上述方法,anyway,解决就好,解决方法是使用webView.isLoading属性。

  1. -(void)webViewDidFinishLoad:(UIWebView *)webView
  2. {
  3.     if (webView.isLoading) {
  4.         return;
  5.     }
  6.     //your code
  7. }