iphone: Как я узнаю, что UIWebView полностью загружен? - PullRequest
7 голосов
/ 21 мая 2011

Да, я знаю, что в UIWebView есть делегат didFinishedLoad и didStartLoad.

Однако, didFinishedLoad не означает полное завершение.Он может быть вызван, когда один из элементов, которые UIWebView завершил загрузку.т. е. UIWebView может вызывать этого делегата несколько раз при загрузке одной страницы.

Так или иначе, вы можете сказать мне, как проверить, загружен ли UIWebView полностью ?

Спасибо

J

Ответы [ 3 ]

11 голосов
/ 01 февраля 2013

У меня плохой опыт работы с DOM, но после некоторого поиска я обнаружил, что document.readyState - отличный вариант.

Из w3schools:

Определение и использование Свойство readyState возвращает (загрузка) статус текущего документа.

Это свойство возвращает одно из четырех значений:

неинициализирован - загрузка еще не началась

загрузка - загрузка

интерактивный - загружен достаточно, и пользователь может взаимодействовать с ним

завершено - полностью загружен

Поэтому я использую это, чтобы узнать, когда UIWebView загрузил документ:

- (void)readyState:(NSString *)str
{ NSLog(@"str:%@",str);

if ([str isEqualToString:@"complete"]||[str isEqualToString:@"interactive"]) {
    NSLog(@"IT HAS BEEN DONE");
    [pageLoadingActivityIndicator stopAnimating];
}

}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
 //other code...
 [self readyState:[browserWebView stringByEvaluatingJavaScriptFromString:@"document.readyState"]];
}
6 голосов
/ 21 мая 2011

http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/ на Javascript общение обратно с кодом Objective-C

Возможно, используйте хеш расположения документа.

И добавьте в html тело webview:

<body onload="document.location.hash='myapp:myobject:myfunction';">

Я знаю, что это немного странно, но работает. И его можно использовать в содержимом на основе ajax, потому что это зависит от вас, когда вы хотите вызвать свой готовый метод. Или это может быть использовано в качестве полной схемы связи.

0 голосов
/ 21 мая 2011

Что вы можете сделать, это отобразить сетевой индикатор в представлении, которое отображается в строке состояния.Когда ваша страница загружается, индикатор будет продолжать вращаться до тех пор, пока страница не будет загружена полностью.Когда страница полностью загрузится, индикатор перестанет вращаться и станет невидимым.
Просто посмотрите на этот пример: Сетевой индикатор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...