How can I make a UITextField move up when the keyboard is present - on starting to edit?
Mit dem iOS SDK:
Ich habe einUIView
mitUITextField
s, die eine Tastatur aufrufen. Ich brauche es, um in der Lage zu sein:
Scrollen des Inhalts von erlaubenUIScrollView
um die anderen Textfelder zu sehen, sobald die Tastatur aufgerufen wird
Automatisch "springen" (durch Scrollen) oder kürzen
Ich weiß, dass ich eine braucheUIScrollView
. Ich habe versucht, meine Klasse zu ändernUIView
zu einemUIScrollView
Ich kann die Textfelder jedoch immer noch nicht nach oben oder unten scrollen.
Brauche ich beides?UIView
und einUIScrollView
? Geht einer in den anderen?
Was muss implementiert werden, um automatisch zum aktiven Textfeld zu scrollen?
Im Idealfall erfolgt die Einrichtung der Komponenten so weit wie möglich im Interface Builder. Ich möchte nur Code für das schreiben, was er benötigt.
Beachten Sie dasUIView
(oderUIScrollView
), mit dem ich arbeite, wird über eine Tableiste aufgerufen (UITabBar
), die normal funktionieren muss.
Bearbeiten: Ich füge die Bildlaufleiste nur hinzu, wenn die Tastatur aufgerufen wird. Obwohl es nicht benötigt wird, habe ich das Gefühl, dass es eine bessere Oberfläche bietet, da der Benutzer dann beispielsweise Textfelder scrollen und ändern kann.
Ich habe es zum Laufen gebracht, wo ich die Rahmengröße desUIScrollView
wenn die Tastatur auf und ab geht. Ich benutze einfach:
-(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
}
Dies "verschiebt" oder zentriert jedoch nicht automatisch die unteren Textfelder im sichtbaren Bereich, was ich wirklich gerne hätte.