2010-08-26 6 views
5

J'ai un UIWebView que je suis en train de mettre en texte et en affichant puis en masquant, en changeant le texte et en affichant à nouveau. Le problème que je rencontre est que lorsque je rends la vue visible, je vois l'ancien texte un instant. Existe-t-il un moyen de forcer UIWebView à afficher le nouveau texte lorsqu'il s'affiche?Comment forcer un UIWebView à se mettre à jour lorsqu'il est hors-écran?

Le code est commandé correctement et ressemble à ceci:

[back assignLabelText:[facts getCurrentFact].answer]; 
[self doAnimation:back.view andViewToHide:front.view flipRight:YES]; 
+0

Je ne sais pas si ça vaut la peine de le noter ou non, mais l'émulateur ne semble pas avoir de problèmes avec ça. C'est seulement quand je teste sur mon iPhone 4. – Scotch

+0

que se passe-t-il dans 'getCurrentFact'? – falconcreek

+0

getCurrentFact obtient juste le texte à afficher. assignLabelText fait toute l'affectation de texte. – Scotch

Répondre

1

Appel setNeedsDisplay sur la vue de dos

[back assignLabelText:[facts getCurrentFact].answer]; 
[[back view] setNeedsDisplay]; 
[self doAnimation:back.view andViewToHide:front.view flipRight:YES]; 
+0

Cela a encore du retard. Si je faisais quelque chose comme ça dans Windows, j'appellerais DoEvents après avoir défini le texte pour indiquer à la boucle de l'interface utilisateur de fonctionner, mais je n'arrive pas à trouver quelque chose comme ça. – Scotch

+1

Essayez d'ajouter un délai avant de faire l'animation. Ce qui se passe probablement, c'est que votre animation enregistre ce à quoi ressemble la vue avant l'animation et ne lui donne jamais une chance de rendre. –

+0

Fonctionne avec brio! Merci beaucoup pour cette astuce, je craignais le pire que la vue web ne puisse tout simplement pas être utilisée dans les animations, mais * ouf * ils peuvent :) – Chris

2

Vous devriez attendre au moins est tiré de webViewDidFinishLoad: WebView avant de révéler le WebView. Même alors, il peut y avoir un certain retard, donc j'ajoute un délai supplémentaire de 0,1 seconde avant de révéler la vue.

+0

J'ai mis mon retard à 0.01 et ça a bien fonctionné – AlBeebe

1

J'ai fait quelques nouvelles fonctions pour faire mes animations et utilisé un délai de 0.1 pour les exécuter via performSelector.

Cela ressemble à un hack, mais cela fonctionne et il prend en charge les mêmes problèmes que j'avais avec UILabels qui ont leur changement de texte.

+0

Essayé 0.1, ça marche parfois, d'autres fois, c'est juste vide. – ninjaneer

Questions connexes