2009-08-12 6 views
0

J'ai un UITextView que j'essaie de garder caché à l'utilisateur, sauf que j'utilise son interface de correction automatique, donc je ne peux pas simplement mettre sa propriété cachée à true.iphone Cache constamment du texte dans un UITextView

Actuellement, je mets le contentOffset tel qu'il cache la première ligne de texte, mais cela ne fonctionne pas toujours. Parfois, c'est le cas, d'autres fois, la vue déroulante revient à l'endroit où le texte est partiellement visible. Cela semble arbitraire, car sans changer de ligne de code, le comportement changera automatiquement après que je reconstruis ...

J'ai essayé de désactiver le défilement pour UITextView, ainsi que de surcharger la fonction drawRect de UITextView ne pas faire quoi que ce soit, ainsi que de changer la TextColor de UITextView pour effacer la couleur. Il semble que vous ne pouvez pas modifier les valeurs alpha des couleurs du texte, cela n'a donc pas fonctionné.

D'autres idées sur la façon d'y parvenir? Merci d'avance.

Répondre

0

Peut-être que le UIScrollView essaye d'être intelligent sur l'endroit où il défile automatiquement, même si vous avez désactivé le défilement de l'utilisateur?

Vous pouvez essayer de manipuler le contentOffset et voir si le contrôle de cette valeur arrête le défilement indésirable.

Une autre idée pour aider déboguer toute activité de défilement indésirable est d'ajouter debug NSLog déclarations dans quelques-unes des principales méthodes de UIScrollViewDelegate, comme scrollViewDidScroll: ou scrollViewShouldScrollToTop:. Si l'approche contentOffset échoue, cela peut vous aider à comprendre ce qui ne va pas et éventuellement l'empêcher au niveau du délégué. D'ailleurs, il semble que ce que vous faites en général soit un peu hacky. Vous pourriez vous retrouver avec des réponses plus pointues (et un code plus propre) en vous posant des questions sur votre véritable objectif - peut-être avoir votre propre version de vérification orthographique?

+0

Il est assez hacky :). Fondamentalement, je veux juste l'interface de choix Kanji pour l'entrée japonaise que les UITextView et TextFields ont automatiquement. Mais j'affiche le texte dans plusieurs couleurs/tailles, ce que UITextViews et Fields ne supportent pas. Donc j'utilise un UITextView caché pour l'entrée qui était bien avant que j'ai besoin du sélecteur parce que je l'ai juste mis à caché. Mais maintenant que j'ai besoin du sélecteur Kanji et que je ne connais pas d'API existante, je dois masquer le texte tout en montrant le sélecteur :( – kiyoshi

+0

J'ai réfléchi un peu, mais je ne suis toujours pas sûr d'un Avez-vous essayé d'utiliser un UIWebView à la place pour la saisie, puisque vous pouvez changer les couleurs plus facilement? Je suppose que peut-être oui en fonction de votre autre question, ce n'est pas une bonne idée, mais vous pouvez montrer deux vues - L'utilisateur peut utiliser des boutons pour modifier l'apparence du texte dans la zone colorée, même s'il saisit le texte lui-même (en noir et blanc) dans l'UITextView standard. Désolé, je ne peux rien trouver de mieux – Tyler

+0

UIWebView a été ce que j'ai essayé en premier, mais c'est fastidieux et je préfère ne pas remplacer toutes les balises html lors des modifications, en plus les temps de chargement sont ennuyeux. de dessiner le texte, et je pense en utilisant un textview caché pour i Le but de nput n'est pas trop hacky, juste pour les choses japonaises dont j'ai besoin pour faire des choses cachées. Je trouve que si je tape dans scrollViewDidScroll je peux y réinitialiser le contentOffset, et ajouter une variable pour qu'elle ne commence pas récursivement aller à scrollViewDidScroll ... Ca fonctionne bien :) merci pour l'aide ^^ – kiyoshi

Questions connexes