Wie legen Sie die Tab-Reihenfolge in iOS fest?
Gibt es eine Möglichkeit (entweder in IB oder code), die tab, um zwischen text-Felder in einer view?
Beachten Sie, dass ich spreche nicht über die nächste Formularfeld nach der Rückkehr (oder "Weiter") gedrückt ist-viele bluetooth-Tastaturen haben eine tab-Taste, die scheint, radeln durch die Felder in völlig anderen Reihenfolge. In meinem speziellen Fall, ist diese Ordnung nicht entsprechen, werden die Felder' position in der Ansicht oder sogar die Reihenfolge, in der die Felder wurden Hinzugefügt. Ändern Sie die xib-Datei von hand zu ändern, die NSNextKeyView scheint nicht, einen Unterschied zu machen.
Weiß jemand, wie man diese Reihenfolge ändern?
InformationsquelleAutor der Frage lazycs | 2011-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin interessiert an der Lösung des gleichen Problems, obwohl bisher die Standard-Bestellung, die angezeigt werden von Links nach rechts, dann von oben nach unten, ist die, die ich will.
Getestet habe ich die Hypothese, dass der cursor springt in die Tiefe-zuerst, um durch den Baum des Untersichten und superview, aber das ist nicht wahr. Ändern der Reihenfolge von Untersichten, ohne deren Speicherort nicht ändern die Reihenfolge der Felder durchzogen von Registerkarte Pressen.
Einer evtl. nützliches feature ist, dass das Textfeld Delegierten textFieldShouldBeginEditing Methode scheint aufgerufen zu werden, für jedes Textfeld in das Fenster der Anwendung. Wenn, dass gibt KEINE, dann das Textfeld nicht ausgewählt werden, so dass, wenn Sie definieren Ihre gewünschten Reihenfolge und machen nur das Recht, eine Rückkehr JA, das könnte dein problem lösen.
InformationsquelleAutor der Antwort sprocket
@Ritzel die Antwort war nur mäßig hilfreich. Nur weil etwas funktioniert out of the box bedeutet nicht, sollten Sie aufhören zu denken, über einen besseren Weg -- oder auch der richtige Weg -- etwas zu tun. Als er bemerkte, das Verhalten ist nicht dokumentiert, aber passt unsere Bedürfnisse die meiste Zeit.
Dies war nicht genug für mich, obwohl. Denken Sie an eine RTL-Sprache und tabs wäre noch die tab-Links-nach-rechts, nicht zu erwähnen, das Verhalten ist völlig Verschieden von simulator auf das Gerät (Gerät nicht Fokus der ersten Eingabe auf der Registerkarte). Vor allem aber, von Apple nicht dokumentierte Umsetzung scheint nur in Betracht ziehen, Blick auf die derzeit installiert in der view-Hierarchie.
Denken Sie an eine form in form (kein Wortspiel beabsichtigt) einer Tabelle anzeigen. Jede Zelle enthält eine einzige Kontrolle, damit nicht alle Formular-Elemente werden gleichzeitig sichtbar. Würde Apple nur radeln zurück, sobald Sie erreichen das Unterste (am Bildschirm!) die Kontrolle, anstatt zu scrollen. Dieses Verhalten ist definitiv nicht das, was wir uns wünschen.
So, hier ist, was ich mir ausgedacht habe. Sollte das Formular verwaltet werden, die von einem view controller und view-Controller sind Teil der responder-Kette. Du bist also vollkommen frei, um die folgenden Methoden implementieren:
Zusätzliche Logik für das Blättern offscreen-Responder sichtbar, vorher gelten.
Ein weiterer Vorteil dieses Ansatzes ist, dass Sie nicht brauchen, um eine Unterklasse alle Arten von Steuerelementen, die Sie möglicherweise anzeigen möchten (wie
UITextField
s), sondern kann stattdessen verwalten die Logik auf controller-Ebene, wo, seien wir ehrlich, ist der richtigen Stelle zu tun.InformationsquelleAutor der Antwort Christian Schnorr
Dies ist, wie Sie die tab-Reihenfolge festlegen, die auf iOS:
http://weaklyreferenced.wordpress.com/2012/11/13/responding-to-the-tab-and-shift-tab-keys-on-ios-5-ios-6-with-an-external-keyboard/
InformationsquelleAutor der Antwort AlleyGator
Die Tab-Taste Verhalten in ios wird wie folgt sein:-
wenn u drücken Sie die Tabulatortaste auf der externen Tastatur die control-Traversen, die in allen Textfeldern in diesem Fenster durch den Aufruf nur shouldBeginEditing Methode, wo Ihr Rückgabewert ist bestimmt auch von Apple, welche nicht überschreiben.
Nach dem Scannen werden alle Felder berechnet er die nächsten x positioniert Textfield relativ zur Ansicht offset von der aktuellen Textfield und dann nächste Y-Feld Positioniert.
Auch nicht getan werden kann nichts, bis die Kontrolle kommt zu textFieldDidBeginEditing Methode.
Grund für apples Einschränkung könnte sein zu lassen, devs zu Folgen den Vorgaben der Benutzeroberfläche, in dem nächsten responder-Feld sollte es am nächsten positioniert Feld eher als jedes andere Feld .
InformationsquelleAutor der Antwort vrk
Registrieren Sie einen UIKeyCommand zu erkennen, die tab-Taste gedrückt. Ich Tat dies in meiner aktuellen view-controller.
Innen den Schlüssel tabKeyPressed handler finden Sie Ihre aktuelle aktive Bereich dann bei Ihrer nächsten responder. orderedTextFields ist ein array von UITextField in der tab-Reihenfolge, die ich möchte.
InformationsquelleAutor der Antwort John Chumnanvech
Können Sie tun dies, indem Sie die Tags für jedes textfield und dem Umgang mit diesem in der textfieldShouldReturn Methode.
Siehe in diesem Blog:
http://iphoneincubator.com/blog/windows-views/how-to-create-a-data-entry-screen
InformationsquelleAutor der Antwort Milk78
Die einzige Möglichkeit, die ich gefunden habe, um eindeutig zu erkennen, eine Registerkarte ' Tastenanschlag von einer physischen Tastatur, ist die Umsetzung der UIKeyInput Protokoll insertText: Methode, die auf einem benutzerdefinierten Objekt, das canBecomeFirstResponder.
Habe ich nicht bekommen, diese an die Arbeit, während die Unterklassen UITextField, leider, wie UITextField nicht zulassen, dass die insertText: Protokoll-Methode aufgerufen.
Könnte Ihnen helfen, auf dem Weg, obwohl..
InformationsquelleAutor der Antwort hsdev
Ich dies Problem gelöst, indem bilden von Unterklassen UITextField als NextableTextField. Dass die Unterklasse hat eine Eigenschaft, Klasse UITextField mit IBOutlet ein Anschluß.
Bauen die Schnittstelle in der IB. Legen Sie die Klasse in Ihrem text Feld NextableTextField. Verwenden Sie den connections Inspector ziehen eine Verbindung zu den 'weiter' - Feld, das Sie wollen, tab.
In Ihr Textfeld delegate-Klasse hinzufügen, die dieser Delegat-Methode...
BTW - ich habe nicht kommen mit diesem; nur daran erinnern, dass jemand anderes die Idee.
InformationsquelleAutor der Antwort mputnamtennessee