2016-09-15 2 views
3

Мне нужно получить высоту UIWebView. в методе webViewDidFinishLoad я имеюПолучите высоту веб-представления в iOS 10

CGFloat height1 = [[webView stringByEvaluatingJavaScriptFromString: @"document.body.scrollHeight"] floatValue]; 
CGFloat height2 = [[webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"] floatValue]; 
CGFloat height3 = [[webView stringByEvaluatingJavaScriptFromString: @"document.body.clientHeight"] floatValue]; 
CGFloat height4 = [[webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.clientHeight"] floatValue]; 
CGFloat height5 = [[webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.scrollHeight"] floatValue]; 
CGFloat height6 = [[webView stringByEvaluatingJavaScriptFromString: @"document.documentElement.offsetHeight"] floatValue]; 

height = MAX(height1, MAX(height2, MAX(height3, MAX(height4, MAX(height5, height6))))); 

и до сих пор все значения меньше, чем реальная стоимость У меня есть эта проблема только в ИО 10

+0

высота WebView или WebView высоты содержимого? –

ответ

13

От форумах компании Apple, ваша проблема, кажется, есть решение

Вы можете использовать javascript func scrollHeight, чтобы найти то, что вам нужно.

NSString *heightStr = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"]; 

Вам просто нужно, чтобы преобразовать его в работоспособное значения с плавающей точкой:

CGFloat webViewHeight = [heightStr floatValue]; 
+0

Это не отвечает на вопрос. OP использовал этот для высоты1 и получил неправильное значение, и я тоже. – Superwayne

+0

Это сработало для меня! Мне удалось получить правильное значение в webViewDidFinishLoad. Я использовал @ "document.height" в более ранних версиях iOS. @ "Document.body.scrollHeight;" хорошо работает в iOS10 в моем случае. –

+0

Он работал и работает со старыми версиями, проверял с 8.1, 9.3 и 10 –

Смежные вопросы