Wie der View-Controller zum Textfeld bewegt wird, wenn die Tastatur angezeigt wird

9

Ich möchte mein uiviewcontroller.xib scrollen. Mein View-Controller hat 8 Textfelder. Also mein Problem ist wenn ich etwas in den 5. textfield schreiben will und so auf meiner Tastatur die Textfelder abdeckt. Wie kann ich dieses Problem lösen und meinen Viewcontroller scrollen lassen?

Bitte führen Sie im Detail, denn ich bin neu in iPhone Entwicklung.

Vielen Dank im Voraus.

    
Exception 03.01.2014, 17:47
quelle

4 Antworten

16

Sie können eine ScrollView verwenden.

Hinzufügen der Bildlaufansicht

Ziehen Sie einen scrollView auf Ihren View-Controller, genauso wie Sie es mit einem Textfeld tun würden, und passen Sie die Dimensionen an Ihre Bedürfnisse an (es scheint, als ob Sie den View-Controller füllen möchten.)

Platzieren Sie dann die Textfelder in der Bildlaufansicht. Ich denke, es ist am einfachsten, den Dokumentumriss auf der linken Seite zu verwenden. Ziehen Sie die Textfelder wie in der Abbildung hier in die Bildlaufansicht.

So blättern Sie durch die Bildlaufansicht, wenn die Tastatur angezeigt wird

Fügen Sie diesen Code Ihrem View-Controller in viewDidLoad

hinzu %Vor%

Und fügen Sie diese Methoden Ihrem View-Controller hinzu

%Vor%

Die ersten beiden Methoden werden aufgerufen, wenn die Tastatur angezeigt wird. Die zweite wird aufgerufen, wenn Sie ein Textfeld bearbeiten.

Gehen Sie nun zu Ihrem Storyboard und fügen Sie der gerade hinzugefügten Methode Aktionen der Textfelder hinzu. Sie können mit der rechten Maustaste auf das Textfeld klicken, die entsprechende Aktion auswählen und in die Methode ziehen.

Sie sollten so etwas sehen, wenn Sie mit der rechten Maustaste auf Ihre Textfelder klicken.

Fügen Sie diese Eigenschaft zu Ihrem View-Controller hinzu und ziehen Sie mit der rechten Maustaste von der Bildlaufansicht zu dieser Ansicht. Es ermöglicht Ihrem View-Controller, die Bildlaufansicht zu steuern.

%Vor%

So:

Schließen der Tastatur

Wenn die Zurück-Taste gedrückt wird, möchten wir, dass die Tastatur geschlossen wird.

In Ihrer Ansicht macht der Controller-Header Ihren View-Controller zu einem UITextFieldDelegate Like this:

%Vor%

Fügen Sie diesen Code Ihrem View-Controller in viewDidLoad

hinzu %Vor%

Und fügen Sie diese Methoden Ihrem View-Controller hinzu

%Vor%

Die erste Methode wird aufgerufen, wenn die Tastatur geschlossen wird. Es kehrt die Bildlaufansicht zu ihrer ursprünglichen Position zurück. Die zweite Methode wird aufgerufen, wenn Sie mit der Bearbeitung eines Textfelds fertig sind. In diesem Fall kann die Tastatur geschlossen werden.

Weitere Informationen

Hier finden Sie weitere Informationen zum Verwalten der Tastatur.

Und als Referenz hier ist mein ViewController.h

%Vor%

und ViewController.m

%Vor%     
connor 03.01.2014, 17:58
quelle
5

Alle vorherigen Antworten sind großartig, aber wenn Sie sich nicht mit Code verwirren möchten, verwenden Sie ein Steuerelement.

Einer, den ich liebe, ist Ссылка (Cocoapods: pod 'TPKeyboardAvoiding')

Alles, was Sie tun müssen, ist, Ihre Textfelder in eine UIScrollView einzubetten (Editor / Einbetten in. Wählen Sie zuerst Ihre UITextFields) und dann diese UIScrollView-Klasse auf TPKeyboardAvoidingScrollView.

Ja, Sie sollten zuerst lernen, wie man es manuell macht, aber nach dem Gebrauch, wenn Sie möchten.

    
Nate Lee 04.01.2014 04:06
quelle
1

Wählen Sie die Textfelder aus und gehen Sie zum Menü Editor, und wählen Sie Einbetten in - & gt; Bildlaufansicht Dadurch wird automatisch eine Bildlaufansicht in Ihrer Ansichtshierarchie platziert und die Textfelder werden darin verschoben.

Auch wenn Personen mehrere Textfelder auf dem Bildschirm haben und scrollen möchten, werden sie sie auch in eine UITableView einfügen, in der jede Zelle ein Textfeld enthält. In der Regel ist dies der gruppierte Tabellenansichtszellenstil. Wenn Sie dies tun, kann die Tabellenansicht automatisch die Größe anpassen, wenn die Tastatur angezeigt wird, so dass Sie dies nicht selbst behandeln müssen.

    
Gavin 03.01.2014 18:04
quelle
0

So machen Sie das:

%Vor%     
Dasem 25.03.2014 21:16
quelle