UIWebView加载属性永远不会更改

时间:2013-03-27 16:50:24

标签: ios objective-c uiwebview key-value-observing

我有一个UIWebView正在加载一个简单的请求:

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"derp.com"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];
[webView loadRequest:theRequest];

我有另一种方法在webView上执行一些JavaScript。可以从不同的源(包括webViewDidFinishLoad和viewDidAppear)多次调用此方法。为了防止错误,我将其包含在if语句中,如下所示:

if (!self.webView.loading) {
     ... do stuff....
}

问题是self.webView.loading总是0.我甚至试图建立一个观察者(尝试了几个不同的变体....不是100%确定sytnax):

[self addObserver:self forKeyPath:@"webView.loading" options:0 context:NULL];

但observeValueForKeyPath:ofObject:change:context:永远不会被调用。

2 个答案:

答案 0 :(得分:1)

最好实现UIWebViewDelegate方法......

在viewDidLoad中设置委托:

[webView setDelegate:self];

您可以使用

- (void)webViewDidFinishLoad:(UIWebView *)webView { //做一次加载的事情}`

在负载完成时接到一个回叫,它比搞乱KVO更可靠。

答案 1 :(得分:0)

查看UIWebView doc

isLoading = YES如果接收方仍在加载内容;否则,不。 那么,此时是否可能已完成Web视图的加载?