Il contenuto seguente si applica a entrambi UITextField
e UITextView
.
Informazioni utili
L'inizio del testo del campo di testo:
let startPosition: UITextPosition = textField.beginningOfDocument
La fine del testo del campo di testo:
let endPosition: UITextPosition = textField.endOfDocument
La gamma attualmente selezionata:
let selectedRange: UITextRange? = textField.selectedTextRange
Ottieni la posizione del cursore
if let selectedRange = textField.selectedTextRange {
let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)
print("\(cursorPosition)")
}
Imposta la posizione del cursore
Per impostare la posizione, tutti questi metodi stanno effettivamente impostando un intervallo con gli stessi valori di inizio e fine.
All'inizio
let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
All'estremità
let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
A una posizione a sinistra della posizione corrente del cursore
// 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 posizione arbitraria
Inizia dall'inizio e sposta 5 caratteri a destra.
let arbitraryValue: Int = 5
if let newPosition = textField.position(from: textField.beginningOfDocument, offset: arbitraryValue) {
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}
Relazionato
Seleziona tutto il testo
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
Seleziona un intervallo di testo
// 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!)
}
Inserisce il testo nella posizione corrente del cursore
textField.insertText("Hello")
Appunti
Guarda anche