【发布时间】:2013-03-27 16:50:24
【问题描述】:
我有一个 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: 永远不会被调用。
【问题讨论】:
-
您是否 1. 确定您不总是重新实例化 Web 视图? 2. 知道
if()不会轮询该属性(因为它不是循环)? -
1.是的。 2. 是的。如果 webView 正在加载,则回调会触发 JavaScript 执行。如果第一次调用该方法时没有加载,则意味着不会触发回调。
-
似乎您正在尝试检查 Web 视图是否在下一行加载,改变您调用 loadRequest: on webview 实例,但我知道一旦您获得委托,标志加载将被更改回调 webView:didStartLoading 或 webView:didFinishLoading ! HTH :)
标签: ios objective-c uiwebview key-value-observing