2009-09-24 10 views
0

J'ai un UIViewController avec 4 UITextFields, 3 d'entre eux utilisent le pavé numérique et 1 utilise un clavier ASCII. Je ne parviens pas à fermer le clavier ASCII lorsque l'utilisateur touche un bouton d'arrière-plan en dehors du champ de texte. Le bouton d'arrière-plan fonctionne bien pour fermer les pavés numériques mais ne rejette pas le clavier ASCII.resignFirstResponder ne rejette pas le clavier ASCII pour UITextField

Oui, le clavier ASCII a un bouton Terminé et cela fonctionne (j'ai le délégué défini dans IB et j'ai implémenté textFieldShouldReturn) mais je veux que tous les champs puissent être ignorés en touchant la zone d'arrière-plan afin qu'ils se comportent (autant que possible). La méthode d'action du bouton d'arrière-plan (ci-dessous) est appelée et elle appelle resignFirstResponder pour tous mes objets de champ de texte mais l'appel pour le champ de texte avec le clavier ASCII ne rejette pas le clavier, tandis que l'autre appelle les champs de texte numériques rejeter leurs NumberPads.

-(IBAction)backgroundClick:(id)sender 
{ 
    // resignFirstResponder makes the keyboard go away when the 
    // user clicks outside of one of the text fields 
    [textField resignFirstResponder]; 
    [num1Field resignFirstResponder]; 
    [num2Field resignFirstResponder]; 
    [num3Field resignFirstResponder]; 
    [num4Field resignFirstResponder]; 
} 

Que manque-t-il ici?

+0

J'ai ajouté une autre ligne au début de la fonction ci-dessus: BOOL isIt = [textField isFirstResponder]; Pendant que le clavier était actif, j'ai touché dans la zone d'arrière-plan et j'ai eu un point d'arrêt juste après cet appel, c'est-à-dire NON. Je ne sais pas pourquoi, mais je suppose que c'est pourquoi la démission ne fonctionne pas. – progrmr

Répondre

1

J'ai trouvé le problème. Le point de référence du TextField n'était pas connecté au propriétaire du fichier dans IB. Je pensais avoir vérifié les connexions mais j'ai manqué évidemment ceci.

Questions connexes