2010-04-18 1 views
0
[myTextField becomeFirstResponder]; 
[myTextField resignFirstResonder]; 

Lorsque je fais cela -(BOOL)textFieldShouldReturn:(UITextField *)textField, cela fonctionne. Mais quand j'utilise le même code à l'intérieur -(void)textFieldDidBeginEditing:(UITextField *)textField, cela ne fonctionne pas.Impossible d'appeler resignFirstResponder à partir de textFieldDidBeginEditing? (iPhone)

Je suis certain qu'il appelle textFieldDidBeginEditing. J'ai un NSLog à l'intérieur de la méthode et il est appelé.

+0

Pourquoi voudriez-vous le textField à démissionner firstResponder état dès que l'édition commence? Notez également que l'appel de '-becomeFirstResponder' est superflue - textField doit être firstResponder s'il reçoit l'un de ces messages délégués. – jlehr

+0

Parce que j'essaie de faire apparaître un DatePicker à la place du clavier. – Chris

+0

Je vois la date sur ce commentaire est super vieux, mais si quelqu'un cherche ce comportement similaire - il suffit d'attribuer le sélecteur de date à la propriété .inputView du champ de texte – Mathieson

Répondre

4

Avant de renvoyer l'état firstResponder, textField effectue un rappel à sa propre méthode -canResignFirstResponder, qui renvoie NO si textField est actuellement dans une session d'édition. Vous pouvez implémenter la méthode -textFieldShouldBeginEditing: delegate pour renvoyer NO si vous souhaitez empêcher la session d'édition de commencer.

7

C'est années, mais besoin de quelque chose identique et cette réponse étant en haut de mes résultats de recherche, je me suis retrouvé à jouer et est venu avec ceci:

[myTextField performSelector:@selector(resignFirstResponder) 
        withObject:nil 
        afterDelay:0 
]; 
Questions connexes