Diese Antwort wurde für Swift aktualisiert 3
Folgende Inhalte sowohl auf UITextField
und UITextView
gilt.
Nützliche Informationen
Der Anfang des Textes Textfeld:
let startPosition: UITextPosition = textField.beginningOfDocument
Das Ende des Textes Textfeld:
let endPosition: UITextPosition = textField.endOfDocument
Der aktuell ausgewählte Bereich:
let selectedRange: UITextRange? = textField.selectedTextRange
Get Cursorposition
if let selectedRange = textField.selectedTextRange {
let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)
print("\(cursorPosition)")
}
Set Cursorposition
Um die Position zu setzen, alle diese Methoden setzen tatsächlich eine Reihe mit den gleichen Anfangs- und Endwert.
Zu Anfang
let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
Zum Ende
let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
um eine Position nach links von der aktuellen Cursorposition
// only if there is a currently selected range
if let selectedRange = textField.selectedTextRange {
// and only if the new position is valid
if let newPosition = textField.position(from: selectedRange.start, offset: -1) {
// set the new position
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}
}
In eine beliebige Position
Beginnen Sie am Anfang und bewegen Sie 5 Zeichen nach rechts.
let arbitraryValue: Int = 5
if let newPosition = textField.position(from: textField.beginningOfDocument, offset: arbitraryValue) {
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}
Verwandte
den gesamten Text auswählen
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
Wählen Sie einen Textbereich
// Range: 3 to 7
let startPosition = textField.position(from: textField.beginningOfDocument, offset: 3)
let endPosition = textField.position(from: textField.beginningOfDocument, offset: 7)
if startPosition != nil && endPosition != nil {
textField.selectedTextRange = textField.textRange(from: startPosition!, to: endPosition!)
}
Einfügen von Text an der aktuellen Cursor positio n
textField.insertText("Hello")
Hinweise
Verwenden textField.becomeFirstResponder()
Fokus auf das Textfeld zu geben und machen die Tastatur erscheinen.
Siehe this answer für, wie Sie den Text in einem bestimmten Bereich erhalten.
Siehe auch
Was ist der Zweck von startPosition? Was kannst du damit machen? Was ist auch der Zweck, den man braucht, um die Cursorposition zu bekommen? – Honey
@Honey, ich habe diesen Variablennamen verwendet, um hier auf zwei verschiedene Dinge zu verweisen. Der erste sollte sich auf den Anfang des Textfelds beziehen. Es wäre nützlich, wenn Sie den Cursor dorthin bewegen möchten. Die zweite sollte sich auf das Betteln eines ausgewählten Textes beziehen. Es ist nützlich, wenn Sie diesen Bereich kopieren oder ein Attribut festlegen möchten. – Suragch
Gibt es etwas, um den Cursor nach rechts zu bewegen, während das Textfeld leer ist? Ich folgte deiner Antwort, aber ich konnte es nicht schaffen. –