Programmez avec UITextField et UITextView sur iPhone et iPad

de | 31 août 2011

UiTextField et UITextView sous iOS (iphone et ipad)

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];

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.