2010-02-26 4 views
0

J'ai un comportement bizarre qui n'apparaît que la semaine dernière. Je n'utilise pas IB, tous les contrôles sont créés en code.UITextField: texte entré par programme mais pas visible dans le champ de texte

J'ai un champ de texte avec un clavier actif. La première fois que je charge le champ de texte et que j'utilise le clavier, tout fonctionne normalement. La deuxième fois que je l'utilise, le texte tapé n'apparaît pas dans le champ de texte. Cependant, le texte est dans le champ de texte par programme. Par exemple, je peux l'utiliser pour exécuter une recherche. Lorsque le clavier se ferme, le texte apparaît.

Certains de mes UITextField ont un texte mal aligné. Par exemple, j'écris "bonjour", et au lieu d'afficher centré dans le champ comme normal, il affiche plusieurs pixels décalés vers le bas dans la mesure où le bas du texte est coupé. C'est presque comme si une autre vue coupait le fond du texte en l'obscurcissant.

J'utilise trois20, mais selon http://groups.google.com/group/three20/browse_thread/thread/d7c4bc1ee2f9590d#, Xcode est suspecté de causer le problème. J'ai vu le comportement sur 2 macs différents, l'un fonctionnant avec Snow Leopard (10.6) et l'autre avec Leopard (10.5).

Voici comment le problème regarde dans Xcode:

iPhone http://img22.imageshack.us/img22/3272/screenshotgi.png

Il est pas évident, mais il y a du texte dans ce champ de recherche. Notez que le texte de l'espace réservé n'est pas affiché. Cependant, si je tape Search, le code s'exécute avec le texte entré.

Voici comment l'application apparaît dans le simulateur:

Screenshot XCode http://img532.imageshack.us/img532/2572/capturadepantalla201002o.png

Répondre

2

Je trouve enfin la raison. J'appelle [textField becomeFirstResponder] dans une fonction appelée de loadView. Mais je le déplace à viewDidAppear et tout fonctionne bien ...

+0

Vous devez appuyer sur la coche à côté de cette question pour que le système sache qu'il a été répondu. – TechZen

+0

Dans mon cas, j'appelais '[textField becomeFirstResponder]' dans 'viewWillApear'. Comme indiqué, il ne fonctionne correctement que s'il est déplacé vers 'viewDidApear'. – Adrian

1

j'ai vu que cela se produise avec des champs de texte et transforme affines. Si vous faites pivoter un champ de texte à l'aide d'une transformation, le texte s'affiche dans une partie apparemment aléatoire de l'aperçu. Si vous utilisez une transformation pour déplacer le champ de texte afin de faire de la place pour le clavier, vous pouvez séparer l'éditeur de texte intégré du champ lui-même. Cela expliquerait également pourquoi le texte est dans le code parce que l'attribut de texte du champ de texte n'est pas affecté par la disposition visuelle de l'interface utilisateur.

+0

Je ne fais pas pivoter les vues. Toujours exécuter en mode portrait ... – mamcx

Questions connexes