Наступний вміст стосується і обох, UITextField
і UITextView
.
Корисна інформація
Сам початок тексту поля тексту:
let startPosition: UITextPosition = textField.beginningOfDocument
Сам кінець тексту поля тексту:
let endPosition: UITextPosition = textField.endOfDocument
Вибраний на даний момент діапазон:
let selectedRange: UITextRange? = textField.selectedTextRange
Отримати положення курсору
if let selectedRange = textField.selectedTextRange {
let cursorPosition = textField.offset(from: textField.beginningOfDocument, to: selectedRange.start)
print("\(cursorPosition)")
}
Встановити положення курсору
Для того, щоб встановити положення, усі ці методи фактично встановлюють діапазон з однаковими початковими та кінцевими значеннями.
До початку
let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
До кінця
let newPosition = textField.endOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
В одну позицію зліва від поточної позиції курсору
// 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)
}
}
До довільної позиції
Почніть з початку і перемістіть 5 символів праворуч.
let arbitraryValue: Int = 5
if let newPosition = textField.position(from: textField.beginningOfDocument, offset: arbitraryValue) {
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
}
Пов'язані
Виберіть весь текст
textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
Виберіть діапазон тексту
// 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!)
}
Вставте текст у поточному положенні курсору
textField.insertText("Hello")
Примітки
Використовуйте, textField.becomeFirstResponder()
щоб зосередити увагу на текстовому полі та зробити клавіатуру.
Дивіться цю відповідь, як отримати текст у деякому діапазоні.
Дивитися також