2016-06-07 6 views
0

Ich habe eine UIScrollView, die einen UIView Container enthält, der mehrere UITextField s enthält.Bewegen UITextField über Tastatur bei Verwendung von UIScrollView

Ich möchte Folgendes tun: Wenn ich ein Feld auswählen und es unter der Tastatur ist, raise Erhöhung Textfeld sagen 20 Punkte über der Tastatur. Wenn es über der Tastatur ist, dann tu nichts.

Das eigentliche Problem ist, dass das letzte Feld überhaupt nicht sichtbar ist, wenn die Tastatur aktiv ist, weil ich das Ende der UIView erreicht habe (in meinem Fall ist es 836 Punkte groß).

Ich dachte, dass ich die gesamte Ansicht die Höhe der Tastatur erhöhen könnte, aber das bedeutet nicht, dass das aktuelle Feld GENAU 20 Punkte über der Tastatur sein wird.

Irgendwelche Ideen?

EDIT: Dies ist keine doppelte Frage. Ich habe bereits eine UIScrollView und ich möchte das aktive Textfeld genau 20 Punkte über der Tastatur, wenn das Feld unter der Tastatur ist, wenn Sie "Weiter" auf der Tastatur drücken, nachdem Sie das vorherige Feld bearbeitet haben.

+0

Ändern Sie die Inhaltsansicht der Bildlaufleiste so, dass die gesamte Bildlaufansicht im Bereich über der Tastatur gescrollt werden kann. – matt

+0

Zusätzlich können Sie 'setContentOffset (_ :, animated:)' verwenden, um den 20-Punkt-Abstand über der Tastatur zu erreichen. Verwenden Sie die Tastaturbenachrichtigungen "UIKeyboardWillShowNotification" und "UIKeyboardWillHideNotification", um die Größe der Tastatur zu ermitteln, wenn sie angezeigt wird. – paulvs

+0

@paulvs Ich habe nicht mit diesen vorher gearbeitet, also wäre ein kleiner Code hilfreich. – Lawrence413

Antwort

1

Werfen Sie einen Blick auf die Benachrichtigungen zu KeyboardWillShow und KeyboardWillHide.

Wenn implementiert, kann die Höhe der Tastatur aus dem Benachrichtigungsobjektparameter abgerufen werden.

Von dort aus kann Ihr UIView-Frame um den gewünschten Betrag angepasst werden, sodass die UITextFields um 20 Punkte über der Tastatur liegen.

Hoffe, das hilft.

+0

Ich verstehe das, und was @matt sagte, aber das behebt nur das letzte Feld nicht sichtbar. Das Problem besteht darin, die gesamte Ansicht relativ zum aktiven Feld zu verschieben, das 20 Punkte über der Tastatur liegt. Ich kann die X-Punkte der Ansicht nicht manuell verschieben. Es muss sich anpassen. – Lawrence413

+0

Danke! Ich habe ein Apple-Tutorial gefunden, indem ich angefangen habe, was Sie gesagt haben, und es hat mein Problem behoben. – Lawrence413

+0

@ Lawrence413 Kein Problem Kumpel! – cmart

0

versuchen Sie, die TPKeyboardAvoiding Bibliothek zu verwenden. Sie müssen nur die scrollView-Klasse festlegen. und es wird alle Dinge handhaben.

Ich hoffe, es wird Ihnen helfen.

0

einen Beobachter hinzu UIKeyboardWillShowNotification in Ihrem viewWillAppear so -

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardWillShow:) 
              name:UIKeyboardWillShowNotification 
              object:nil]; 

Und dann in der keyboardWillShow: Methode, blättern Ihre Ansicht blättert auf den Rahmen des UITextField in folgenden Weise -

- (void) keyboardWillShow:(UIView *)aView { 
[scrollview scrollRectToVisible:textView.frame animated:YES]; 
} 

Wenn Ihr TextField bereits auf dem Bildschirm ist, wird dies nichts tun. Wenn sich das Textfeld unter der Tastatur befindet, wird die Bildlaufleiste automatisch in den TextView-Rahmen verschoben.

Verwandte Themen