Пользователь был, имеющие проблемы с их использованием показателя активности, что apears до тех пор, пока страница загрузится, но их вернутся после того, как основное содержание погрузил вопрос здесь UIWebView not finishing loading? и ниже приведен код ответа. После кода я подробно расскажу о том, как это можно использовать для вашей ситуации.
(В коде ниже веб-страницы действительно начинает загрузку на //show UIActivityIndicator
и действительно заканчивает загрузку основного содержания (а не дополнительный контент вы боретесь с) на //hide UIActivityIndicator
)
//Define the NSStrings "lastURL" & "currentURL" in the .h file.
//Define the int "falsepositive" in the .h file. (You could use booleans if you want)
//Define your UIWebView's delegate (either in the xib file or in your code)
- (void)webViewDidFinishLoad:(UIWebView *)webView {
lastURL = [[NSString alloc] initWithFormat:@"%@", webView.request.mainDocumentURL];
if (falsepositive != 1) {
NSLog(@"Loaded");
//hide UIActivityIndicator
} else {
NSLog(@"Extra content junk (i.e. advertisements) that the page loaded with javascript has finished loading");
//This method may be a good way to prevent ads from loading hehe, but we won't do that
}
}
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; {
NSURL *requestURL =[request mainDocumentURL];
currentURL = [[NSString alloc] initWithFormat:@"%@", requestURL]; //not sure if "%@" should be used for an NSURL but it worked...
return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
if ([currentURL isEqualToString:lastURL]) {
falsepositive = 1;
NSLog(@"The page is loading extra content with javascript or something, ignore this");
} else {
falsepositive = 0;
NSLog(@"Loading");
//show UIActiviyIndicator
}
}
При загрузке страницы в ИО , webviewdidstart и webviewdidfinish, но не зная разницы в вашей главной странице/html-контенте цели-c, снова вызывает этот дополнительный контент, такой как реклама или фреймы. Используя это, если бы я был в вашей ситуации, я бы создал BOOL, например pageIsLoading, и установил его в true в webviewdidstart, а затем установил в false в webviewdidfinish. После того, как BOOL отключен в webviewdidfinish, я бы закончил webviewdidfinish, вызвав метод, который будет проверяться после короткой задержки, если BOOL pageIsLoading == YES и если это так, ничего не делать, потому что загружается больше контента. Если pageIsloading == no, тогда весь контент должен быть загружен, и теперь самое подходящее время для моментального снимка.
Да, это решение, но оно должно быть сделано программно, поэтому я не могу использовать UIButton для этого. Кажется, что событие UIWebView webViewDidFinishLoad запускается, когда представление не полностью загружено. Так что мне нужно другое решение, но большое спасибо за ваш ответ. – AlfuryDB
Я отредактировал свой ответ выше. Надеюсь, это поможет вам. – Mahesh
Наконец, я забыл ответить, но я использовал функцию javascript для связи с UIWebView и сделать снимок экрана в тот момент, когда захотел. В любом случае, спасибо вам большое :) – AlfuryDB