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

Volovitz

Nouveau membre
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
 

Larme

Vétéran
Club MacG
11 Décembre 2007
6 507
399
Paris
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.
 

Volovitz

Nouveau membre
19 Novembre 2012
4
0
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.
 

Rez2a

Membre d’élite
Club MacG
4 Décembre 2008
1 056
123
35
Paris
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;
}
 

Volovitz

Nouveau membre
19 Novembre 2012
4
0
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 ;)