Свойство загрузки UIWebView никогда не меняется
У меня есть UIWebView, который загружает простой запрос, например, так:
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"derp.com"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];
[webView loadRequest:theRequest];
У меня есть другой метод, который выполняет некоторый JavaScript в webView. Этот метод может вызываться несколько раз из разных источников (включая webViewDidFinishLoad и viewDidAppear). Чтобы защититься от ошибок, я обернул это в оператор if следующим образом:
if (!self.webView.loading) {
... do stuff....
}
Проблема в том, что self.webView.loading ВСЕГДА 0. Я даже пытался настроить наблюдателя (пробовал несколько разных вариантов.... не уверен на 100% в синтаксисе):
[self addObserver:self forKeyPath:@"webView.loading" options:0 context:NULL];
Но наблюдайте ValueForKeyPath:ofObject:change:context: никогда не вызывается.
2 ответа
Лучше реализовать методы UIWebViewDelegate...
Установите делегата в viewDidLoad:
[webView setDelegate:self];
Ты можешь использовать
- (void)webViewDidFinishLoad:(UIWebView *)webView {
// делать вещи после загрузки}`
Чтобы перезвонить после завершения загрузки, это гораздо надежнее, чем возиться с КВО.
Глядя на документ UIWebView
isLoading = YES, если получатель все еще загружает контент; в противном случае НЕТ. Тогда возможно ли, что на этом этапе загрузка вашего веб-представления уже завершена?