Avec le SDK iOS:
J'ai un UIView
avec des UITextField
s qui font apparaître un clavier. J'en ai besoin pour pouvoir:
Permet de faire défiler le contenu du
UIScrollView
pour voir les autres champs de texte une fois le clavier levé"Saut" automatique (en faisant défiler vers le haut) ou raccourcissement
Je sais que j'ai besoin d'un UIScrollView
. J'ai essayé de changer la classe de mon UIView
en UIScrollView
mais je ne parviens toujours pas à faire défiler les zones de texte vers le haut ou vers le bas.
Ai-je besoin à la fois d'un UIView
et d'un UIScrollView
? Est-ce que l'un entre dans l'autre?
Que faut-il mettre en œuvre pour faire défiler automatiquement le champ de texte actif?
Idéalement, autant de configuration des composants que possible se fera dans Interface Builder. Je voudrais seulement écrire du code pour ce qui en a besoin.
Remarque: le UIView
(ou UIScrollView
) avec lequel je travaille est affiché par une barre d'onglets ( UITabBar
), qui doit fonctionner normalement.
Edit: j'ajoute la barre de défilement juste au moment où le clavier apparaît. Même si ce n'est pas nécessaire, j'ai l'impression que cela offre une meilleure interface, car l'utilisateur peut faire défiler et modifier les zones de texte, par exemple.
Je l'ai fait fonctionner où je change la taille d'image du UIScrollView
quand le clavier monte et descend. J'utilise simplement:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
//Keyboard becomes visible
scrollView.frame = CGRectMake(scrollView.frame.origin.x,
scrollView.frame.origin.y,
scrollView.frame.size.width,
scrollView.frame.size.height - 215 + 50); //resize
}
-(void)textFieldDidEndEditing:(UITextField *)textField {
//keyboard will hide
scrollView.frame = CGRectMake(scrollView.frame.origin.x,
scrollView.frame.origin.y,
scrollView.frame.size.width,
scrollView.frame.size.height + 215 - 50); //resize
}
Cependant, cela ne "monte" pas ou ne centre pas automatiquement les champs de texte inférieurs dans la zone visible, ce que j'aimerais vraiment.