2011-01-04 5 views
2

Ich arbeite an einer App, die eine benutzerdefinierte Tastatur für die Texteingabe verwenden wird. Die Tastatur sollte "Vorwärts" - und "Zurück" -Tasten haben.iOS - Umgang mit der Unfähigkeit, die Cursor-Position in einem UITextField

Einige Suchvorgänge auf SO legen nahe, dass es unmöglich ist, die Cursorposition programmgesteuert in einem UITextField festzulegen.

Ich habe stattdessen mit einem UITextView betrachtet. Dies ermöglicht es, die Cursorposition festzulegen. Aber das Scrollverhalten wird extrem nervig.

Ich frage mich, ob jemand eine gute Problemumgehung kennt. Im Grunde möchte ich etwas, das Text und einen Cursor hat, und ich kann die Cursorposition programmgesteuert festlegen.

EDIT: Interessanterweise, wenn ich ein UITextField im Simulator habe und ich die Vorwärts- oder Zurück-Taste auf meiner Mac-Tastatur drücke, bewegt sich der Cursor vorwärts oder rückwärts. Ich sehe jedoch keine Möglichkeit, dieses Verhalten auf einem Gerät nachzuahmen. . . oder mit einem Mausklick auf den Bildschirm des Simulators.

Antwort

0

Ich benutze auch eine UITextView für den Zweck der Lage, die Cursorposition zu setzen.

Wenn Sie eine Unterklasse UITextView (die selbst eine Spezialisierung der UIScrollView ist), können Sie „scrollingEnabled“ außer Kraft setzen und das Rück NO:

- (BOOL) scrollingEnabled 
{ 
    return NO; 
} 

Ich hatte auch mit der contentInset und Content Eigenschaften spielen genau das bekommen, was Ich wollte.

+0

Auch wenn ich self.scrollEnabled = NO bei der Initialisierung und override isScrollEnabled gesetzt habe, um immer NEIN zurückzugeben, kann es nach oben scrollen, wenn es ausgewählt wird. (Das "kann" hängt von der Schriftgröße relativ zur Größe der Ansicht ab.) –

+0

ja, du musst deine Ansichtsgröße anpassen. – TomSwift

+0

Entschuldigung; Du hast Recht. Ich hatte einen toten Code in meinem Projekt. Ich setze scrollEnabled auf NEIN, und ich muss die Ansichtsgröße anpassen und die Eingabe in das Feld verfolgen, um ein vollständiges Scrollen zu vermeiden. – TomSwift

4

Die angenommene Antwort war zu der Zeit korrekt, aber ist jetzt veraltet. In iOS 5 entspricht UITextField dem UITextInput-Protokoll. Die Cursorposition kann daher über die Eigenschaft selectedTextRange festgelegt werden.

Verwandte Themen