UIWebView,确定页面是否已加载

时间:2012-05-01 10:09:54

标签: iphone objective-c xcode

我想知道我的WebView何时加载了一个页面。我是新手,我想知道你是否有任何建议。我需要在页面加载时创建一个“加载屏幕”。这是我的基本代码:

- (void)viewDidLoad {


NSString *urlAddress = @"http://google.se";

//Create a URL object.
NSURL *url = [NSURL URLWithString:urlAddress];

//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

//Load the request in the UIWebView.
[webView loadRequest:requestObj];
}

谢谢!

3 个答案:

答案 0 :(得分:8)

当视图完成加载,成功加载和失败加载时,有两个不同的回调。它们都是UIWebViewDelegate protocol的一部分。

实施它并将自己设置为Web视图的委托。然后实现

- (void)webViewDidFinishLoad:(UIWebView *)webView

知道加载何时完成,以便您可以删除加载屏幕并实施

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

知道它是否失败,以便您可以向用户显示和显示相应的消息,而不是无限加载屏幕。

答案 1 :(得分:3)

查看UIWebViewDelegate Protocoll。如果您设置了委托,则会收到– webViewDidFinishLoad:

等消息

这就是你想要的,不是吗?

答案 2 :(得分:0)

我对DOM的经验不佳,但经过一番搜索,我发现document.readyState是不错的选择。

来自w3schools:

定义和用法 readyState属性返回当前文档的(加载)状态。

此属性返回以下四个值之一:

未初始化 - 尚未开始加载 loading - 正在加载 交互式 - 已加载足够,用户可以与之交互 完成 - 满载

所以我用它来知道UIWebView何时加载了文档:

- (void)readyState:(NSString *)str
{ NSLog(@"str:%@",str);

if ([str isEqualToString:@"complete"]||[str isEqualToString:@"interactive"]) {
    NSLog(@"IT HAS BEEN DONE");
    [pageLoadingActivityIndicator stopAnimating];
}

}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
 //other code...
 [self readyState:[browserWebView stringByEvaluatingJavaScriptFromString:str]];
}