El siguiente contenido se aplica a ambos UITextField
y UITextView
.
Información útil
El comienzo del texto del campo de texto:
let startPosition: UITextPosition = textField.beginningOfDocument
El final del texto del campo de texto:
let endPosition: UITextPosition = textField.endOfDocument
El rango seleccionado actualmente:
let selectedRange: UITextRange? = textField.selectedTextRange
Obtener la posición del cursor
if let selectedRange = textField.selectedTextRange {
let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)
print("\(cursorPosition)")
}
Establecer la posición del cursor
Para establecer la posición, todos estos métodos en realidad establecen un rango con los mismos valores iniciales y finales.
Al Principio
let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
Hasta el final
let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
A una posición a la izquierda de la posición actual del cursor
// 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)
}
}
A una posición arbitraria
Empiece por el principio y mueva 5 caracteres hacia la derecha.
let arbitraryValue: Int = 5
if let newPosition = textField.position(from: textField.beginningOfDocument, offset: arbitraryValue) {
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}
Relacionado
Seleccionar todo el texto
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
Seleccionar un rango de texto
// 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!)
}
Insertar texto en la posición actual del cursor
textField.insertText("Hello")
Notas
Ver también