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