1

我有一个 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: 永远不会被调用。

4

2 回答 2

1

更好地实现 UIWebViewDelegate 方法......

在 viewDidLoad 中设置委托:

[webView setDelegate:self];

您可以使用

- (void)webViewDidFinishLoad:(UIWebView *)webView { //加载后执行操作 }`

在加载完成后获得回电,这比搞乱 KVO 可靠得多。

于 2013-03-27T16:59:16.593 回答
0

通过查看UIWebView 文档

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

于 2013-03-27T17:02:39.010 回答