Свойство загрузки 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, если получатель все еще загружает контент; в противном случае НЕТ. Тогда возможно ли, что на этом этапе загрузка вашего веб-представления уже завершена?

Другие вопросы по тегам