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



## Volovitz (5 Octobre 2013)

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 :

```
[textField resignFirstResponder];
```

Merci d'avance pour vos réponses


----------



## Larme (5 Octobre 2013)

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 (5 Octobre 2013)

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 : 

```
- (BOOL)textFieldShouldReturn:(UITextField *)foodTextField {
    return YES;
}
```


```
- (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.


----------



## Larme (5 Octobre 2013)

Est-ce que tu as donné le delegate de ton UITextField ?


----------



## Rez2a (5 Octobre 2013)

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 :


```
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];

    return YES;
}
```


----------



## Volovitz (5 Octobre 2013)

J'ai enfin réussi à le faire fonctionner, merci !


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


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




Rez2a a dit:


> 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


----------

