Lorsqu’on programme des applications pour iPhone ou iPad il survient inévitablement le problème du clavier qui recouvre les champs textes du type UITextField ou UITextView.
Pour corriger ce point il faudra donc implémenter les fonctions delegate qui vont permettre de déterminer quelles sont les actions à faire lorsque le champ texte est modifié. Voici les méthodes à implémenter :
Pour UITextField :
-(void)textFieldDidBeginEditing:(UITextField *)textField
-(void)textFieldDidEndEditing:(UITextField *)textField
Pour UITextView :
-(void)textViewDidBeginEditing:(UITextView *)textView
-(void)textViewDidEndEditing:(UITextView *)textView
Comme vous le voyez les méthodes sont simples à comprendre. Elles permettent de définir les actions à mettre en place lorsqu’un champ vient à être modifié par l’utilisateur de l’application au début de sa modification et à la fin.
Il vous reste à mettre en place la solution qui vous convient pour gérer le problème du clavier qui recouvre le champ.
On peut imaginer modifier la position du UITextView, par exemple, pour l’afficher en haut de la vue. Pour cela on modifie sa « frame » classiquement de cette façon :
textView.frame = CGRectMake(40, 100, 700, 120);
Évidemment, une fois que l’utilisateur aura saisi le texte, il faudra penser à remettre le champ dans sa position d’origine. De même, il faudra penser à mettre le champ en avant plan et cacher ce qui se trouve derrière (ou au moins le griser en affichant une UIView sous le UITextView). La chose se complique un peu si le champ est sur une UIScrollView car il faudra peut être faire défiler celle-ci aussi (et ensuite la remettre dans sa position d’origine).
Les solutions pour résoudre ce problème ne manquent pas. A vous d’imaginer celle qui convient le mieux à votre utilisation. De même, si nous avons cherché à résoudre un problème dans cet article, les notions que nous avons vues vous permettront d’imaginer beaucoup d’autres choses sympathiques pour enrichir vos applications mobiles.
En complément voici quelques informations concernant l’utilisation des UITextField et UITextView :
Mettre le clavier avec une majuscule lors de la saisie du premier caractère :
textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
Définir un clavier du type numérique pour le champ :
textField.keyboardType = UIKeyboardTypeNumberPad;
Ajouter la petite croix dans le UITextfield (à droite) qui permet de supprimer tout son contenu :
textField.clearButtonMode = UITextFieldViewModeAlways;
Modifier dynamiquement la police de caractère d’un champ (dans cet exemple on change la taille des caractères) :
textField.font = [UIFont systemFontOfSize:17.0];