在iOS中UIWebView每成功载入一个URL资源就会回调一次webViewDidFinishLoad,载入的资源种类包括但不限于html、jpeg、png、css、js,而一个完整页面通常会包含多个URL资源,所以我们无法简单地使用webViewDidFinishLoad来判断一个页面完全载入完毕。

下面提供两种解决方法

1.利用Javascript代码查询页面状态

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    if ([[webView stringByEvaluatingJavaScriptFromString:@"document.readyState"] isEqualToString:@"complete"]) {
    //do something
    }
}

2.利用UIWebView的loading属性判断

@property (nonatomic, readonly, getter=isLoading) BOOL loading;
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    if (!webView.isLoading) {
    //do something
    }
}