2010-05-03 5 views
10

Cela doit être une sorte de gaffeur de débutant que je peux juste voir, et je suis reconnaissant pour les conseils sur ce qu'il faut vérifier ou où chercher.Le clavier de l'iPhone n'apparaît pas lors de l'entrée dans un UITextField

J'ai suivi un tutoriel pour iPhone qui a un UITextField, en m'assurant que j'ai connecté l'IBOutlet pour le champ de texte, et qu'il semble compiler correctement (pas d'erreurs ou d'avertissements). Mais quand je le lance sous le simulateur, et que je clique sur le champ, je n'ai pas le clavier, donc je peux entrer n'importe quoi dans le champ. J'ai essayé de chercher sur le site pour des questions similaires, et tout ce que j'ai trouvé, c'est quelques questions où le développeur essaie de mettre en place une interface utilisateur complexe avec plusieurs contrôleurs, et une qui semblait être le même problème, mais l'affiche originale dit simplement qu'il l'a résolu en commençant un nouveau projet et en transférant le code. I ’ d aime trouver une solution réelle, donc je ne dois pas essayer de reconstruire aléatoirement des projets lorsque ce problème se présente à nouveau.

Merci!

+0

ayant le même problème, j'ai déjà 4 applications sur l'AppStore et c'est la première fois que je vois ça! Ça me rend fou. – jsicary

Répondre

3

À quoi le délégué de UITextField est-il connecté? Avez-vous veillé à ce que les fonctions de délégué, en particulier - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField retourne la bonne chose (dans ce cas, OUI)?

+0

Le tutoriel ne demande pas de connexion à un délégué, seulement un à un IBOutlet dans le contrôleur de vue. J'ai parcouru un autre tutoriel qui a aussi un UITextField sans délégué, simplement connecté à l'IBOutlet du contrôleur de vue, et celui-là a fonctionné. Si cela peut vous aider, le tutoriel que j'ai de la difficulté vient de "Beginning iPhone 3 Development" de Mark et LaMarche. – Norm

1

Je ne sais pas si c'est le problème de quelqu'un d'autre mais j'utilisais un TextField dans un contrôleur TabBar affiché de façon modale et j'ai ajouté le geste de secousse dans mon contrôleur principal. Cela signifiait malheureusement que je définissais [self becomeFirstResponder] dans viewDidLoad. Dans ce cas, lorsque ma vue modale était affichée, elle ne devenait pas le premier répondeur et le clavier ne s'affichait donc pas. Pour corriger cela, j'ai ajouté [self resignFirstResponder] juste avant d'appeler l'affichage modal et tout va bien une fois de plus! Yay (seulement cinq jours pour comprendre cela).

+0

N'a pas fonctionné pour moi :( – jsicary

1

Basicly la seule chose que vous devez faire est de déclarer le champ de texte dans le .h

IBOutlet UITextField *textField

déclarer alors avec le même nom dans la propriété

@property (nonatomic, retain) UITextField *textField;

puis assurez-vous vous synthétisez dans le .m

@synthesize textField;

alors vous devez lier le champ dans le générateur d'interface

6

Assurez-vous que les conteneurs parents ont Interaction utilisateur activé cochée. Il ne suffit pas que les contrôles individuels soient contrôlés. Le UIView peut par inadvertance être désélectionné.

Une chose que vous devriez vérifier est de vous assurer que la vue contenant (le UIView qui contient toutes les commandes), qui est l'icône Affichage dans la visionneuse nib Interface Builder, a Interaction utilisateur activé cochée. Si le conteneur parent n'est pas vérifié, même si les contrôles individuels le font, vous verrez ce comportement.

+0

Merci pour ma vue a Interaction de l'utilisateur Activé non coché.Je travaille par le biais du livre APress, et je décoché que pour la vue quand je devrais m'assurer qu'il a été décoché pour la vue de l'image I –

16

Juste pour couvrir toutes vos bases lors du dépannage, assurez-vous que ce n'est pas le simulateur iOS qui cause cette situation. Je ne voyais pas le clavier apparaître lors de la saisie d'un UITextView et il s'avère que le simulateur vous permet de basculer entre l'affichage du clavier virtuel et le simple fait d'utiliser le clavier de votre ordinateur portable.

Vous pouvez basculer entre les deux via:

Hardware>Keyboard>Toggle Software Keyboard

ou appuyez sur Cmd + K.

(ma source: https://stackoverflow.com/a/24401535/1700540)

alors assurez-vous n'avez pas tort de basculer le simulateur à utiliser uniquement votre clavier physique! ... comme j'avais

+1

Oui, c'est ça. – sabiland