Der folgende Inhalt gilt sowohl für UITextField
als auch UITextView
.
Nützliche Informationen
Ganz am Anfang des Textfeldtextes:
let startPosition: UITextPosition = textField.beginningOfDocument
Ganz am Ende des Textfeldtextes:
let endPosition: UITextPosition = textField.endOfDocument
Der aktuell ausgewählte Bereich:
let selectedRange: UITextRange? = textField.selectedTextRange
Cursorposition abrufen
if let selectedRange = textField.selectedTextRange {
let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)
print("\(cursorPosition)")
}
Cursorposition einstellen
Um die Position festzulegen, legen alle diese Methoden tatsächlich einen Bereich mit denselben Start- und Endwerten fest.
Zu Beginn
let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
Bis zum Ende
let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
An eine Position 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)
}
}
Zu einer beliebigen 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)
}
verbunden
Wählen Sie den gesamten Text aus
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
Wählen Sie einen Textbereich aus
// 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!)
}
Fügen Sie Text an der aktuellen Cursorposition ein
textField.insertText("Hello")
Anmerkungen
Verwenden Sie textField.becomeFirstResponder()
diese Option, um das Textfeld zu fokussieren und die Tastatur anzuzeigen.
In dieser Antwort erfahren Sie, wie Sie den Text in einem bestimmten Bereich abrufen können.
Siehe auch