xCode 5 - comment gérer le bouton "done" du clavier ?

Volovitz

Membre enregistré
19 Novembre 2012
4
0
Bonjour à tous,

Je chercher depuis quelques jours comment interpréter le bouton "done" du clavier.
Dans mon cas précis, ce serait de cacher le clavier lorsque l'on clique sur "terminé" ou sur "retour" du clavier.

Je pense que la solution doit être toute simple mais en cherchant sur Google je ne tombe que sur du code de 2009 qui n'est plus compatible.

Par contre si je détermine un bouton dans ma page (séparé du clavier), je sais le faire disparaitre :
Bloc de code:
[textField resignFirstResponder];

Merci d'avance pour vos réponses :p
 
C'est une app iOS, non ?
Dans ce cas, il faut choisir le type de bouton de retour. Tu peux le faire via l'interface graphique. Tu choisis ton UITextField et dans les paramètres, tu devrais trouver.
Et sur sur la methode delegate (shouldendediting ou un truc du genre), tu retourne YES.
 
Bonjour Larme,

Merci pour ta réponse.

Oui il s'agit bien d'une app iOS.
J'ai recherché dans la documentation ce que tu viens de me donner mais je reste bloqué.

J'ai essayé 2 méthodes :
Bloc de code:
- (BOOL)textFieldShouldReturn:(UITextField *)foodTextField {
    return YES;
}
Bloc de code:
- (BOOL)textFieldShouldEndEditing:(UITextField *)foodTextField {
    return YES;
}

J'ai ajouté un NSLog pour voir si la méthode était appelée au clic du bouton retour et il se trouve que non.
Les 2 méthodes ont été ajoutées dans mon fichier AppDelegate.m

Où ai-je pu faire une erreur svp ? :rose:

Merci d'avance.
 
Salut,

première question, que font ces 2 méthodes-là dans ton AppDelegate ? Il faut les inclure dans le ViewController lié à ton XIB ou au Controller inclus dans ton Storyboard.

Ensuite, effectivement c'est bien la méthode textFieldShouldReturn: qui sera appelée.

Il faut déjà que tu déclares ton controller comme delegate du TextField en question (soit via le code avec [textField setDelegate:self], soit via l'éditeur d'interfaces avec un clic-droit sur le TextField puis en liant l'outlet delegate au controller).

Pour la méthode après, c'est tout con :

Bloc de code:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];

    return YES;
}
 
J'ai enfin réussi à le faire fonctionner, merci !

Bloc de code:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}


---------- Nouveau message ajouté à 20h49 ---------- Le message précédent a été envoyé à 20h48 ----------

Il faut déjà que tu déclares ton controller comme delegate du TextField en question (soit via le code avec [textField setDelegate:self], soit via l'éditeur d'interfaces avec un clic-droit sur le TextField puis en liant l'outlet delegate au controller).

C'est cette partie que je n'avais pas bien saisi !
Merci pour votre aide ;)