How can I make a UITextField move up when the keyboard is present - on starting to edit?

Mit dem iOS SDK:

Ich habe einUIView mitUITextFields, 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.

Antworten auf die Frage(30)

Ihre Antwort auf die Frage