3

我想知道我的 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];
}

谢谢!

4

3 回答 3

8

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

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

- (void)webViewDidFinishLoad:(UIWebView *)webView

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

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

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

于 2012-05-01T10:11:53.737 回答
3

看看 UIWebViewDelegate Protocoll。如果你设置了你的委托,你会收到类似的消息– webViewDidFinishLoad:

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

于 2012-05-01T10:12:19.453 回答
0

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

来自 w3schools:

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

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

未初始化 - 尚未开始加载尚未加载 - 正在加载交互 - 已加载足够并且用户可以与其交互完成 - 完全加载

所以我用它来知道 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]];
}
于 2013-02-01T15:05:19.193 回答