Le contenu suivant s'applique à la fois UITextField
et UITextView
.
Informations utiles
Le tout début du texte du champ de texte:
let startPosition: UITextPosition = textField.beginningOfDocument
La toute fin du texte du champ de texte:
let endPosition: UITextPosition = textField.endOfDocument
La plage actuellement sélectionnée:
let selectedRange: UITextRange? = textField.selectedTextRange
Obtenir la position du curseur
if let selectedRange = textField.selectedTextRange {
let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)
print("\(cursorPosition)")
}
Définir la position du curseur
Afin de définir la position, toutes ces méthodes définissent en fait une plage avec les mêmes valeurs de début et de fin.
Au début
let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
Jusqu'à la fin
let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
Vers une position à gauche de la position actuelle du curseur
// 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)
}
}
Vers une position arbitraire
Commencez par le début et déplacez 5 caractères vers la droite.
let arbitraryValue: Int = 5
if let newPosition = textField.position(from: textField.beginningOfDocument, offset: arbitraryValue) {
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}
en relation
Sélectionnez tout le texte
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
Sélectionnez une plage de texte
// 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!)
}
Insérer du texte à la position actuelle du curseur
textField.insertText("Hello")
Remarques
Voir également