Calculer la hauteur d'UIWebview dans UITableViewCell avec twitter embed tweet

Je charge un html sur un webview, qui peut contenir des liens d'intégration à twitter, vimeo, youtube ou tout simplement html simple.

Juste à des fins de test, j'ai créé une vue simple en utilisant la même façon que je calcule la hauteur, et j'ai une vue de la table dépend de la hauteur calculée pour afficher le webview correctement.

Le problème est que les hauteurs calculées sont fausses, donc html incorporé n'est pas affiché correctement.

Ce sont les prats pertinents de mon code:

-> Ceci charge la string html dans le webview factice, le seul but pour calculer correctement la hauteur, la vue fictive est utilisée pour triggersr la charge de html:

- (void) loadHtml:(NSIndexPath *) indexPath andSsortingng:(NSSsortingng *) htmlSsortingng { CGFloat webViewFrame = 216 * [[UIScreen mainScreen] bounds].size.width / 320; wvVtemp = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, webViewFrame, 5)]; wvVtemp.delegate = self; [wvVtemp loadHTMLSsortingng:htmlSsortingng baseURL:nil]; [dummyView addSubview:wvVtemp]; [dummyView bringSubviewToFront:wvVtemp]; } 

-> WebView delegate, si le webview ne se charge pas, il triggers la méthode pour calculer la hauteur:

  #pragma mark - uiwebview delegate - (void)webViewDidStartLoad:(UIWebView *)webView { } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { if (!webView.isLoading) { [self getHeightForWebViewT:webView]; } } - (void)webViewDidFinishLoad:(UIWebView *)webView;{ if (!webView.isLoading) { [self getHeightForWebViewT:webView]; } } - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { return true; } 

-> Calculer la hauteur de webview:

  - (void) getHeightForWebViewT:(UIWebView *) webView { [webView sizeToFit]; NSSsortingng *output = [webView ssortingngByEvaluatingJavaScriptFromSsortingng:@"document.body.scrollHeight"]; calculatedHeight = [output floatValue]; NSLog(@"Calculated indexPath wvTemp: -> height: %@", output); //[self.tView reloadRowsAtIndexPaths:@[webView.indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; [self.tView reloadData]; } 

-> Le HTML que je suis en train de rendre:

  <html><body>Begin <blockquote class="twitter-tweet" lang="en"> <p dir="ltr" lang="en">Apple seeds OS X El Capitan beta 7 to developers <a href="http://t.co/DBhpDdyXKU">http://t.co/DBhpDdyXKU</a> <a href="http://t.co/sWkTcOVMvt">pic. twitter.com/sWkTcOVMvt</a></p> &mdash; iDownloadBlog (@iDownloadBlog) <a href="https://twitter.com/iDownloadBlog/status/634096776107048961">August 19, 2015</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script><br /> End</body></html> 

Actuellement, cette solution ne fonctionne pas uniquement avec le code d'intégration de Twitter, et la layout finale est la suivante (il manque une "Fin" de html)

tournage d'écran

Un autre problème est qu'il n'y a pas longtime, cela a fonctionné correctement, au cours des dernières semaines, il ne commence à fonctionner que de time en time, et maintenant la sortie est toujours la même.

J'ai essayé toutes les solutions que j'ai trouvées dans google et je pourrais m'en souvenir, mais actuellement je suis coincé dans ceci … n'importe quelle aide / conseil serait très appréciée.

Vous pouvez l'get directement, sans utiliser Javascript

 - (void)webViewDidFinishLoad:(UIWebView *)webView { // webViewHeight = webView.scrollView.contentSize.height; } 

Si vous voulez utiliser Javascript, essayez de replace document.body.scrollHeight par document.body.offsetHeight