Я искал по всему S.O. для простого решения получить текущее положение курсора, затем прокрутите до него (при условии, что клавиатура - видна). Большинство из них кажутся чрезмерно сложными и/или неэффективными в определенных ситуациях. Как я могу выполнять прокрутку каждый раз, независимо от того, находится ли курсор под клавиатурой или нет?Как прокручивать текущую позицию курсора в UITextView?
ответ
1) Убедитесь, что ваш UITextView
«s contentInset
s правильно установить & ваш textView
уже firstResponder
, прежде чем делать это. Свойство contentInset
сообщает textView
, где видимая область предназначена для пользователя. Если клавиатура видна, убедитесь, что свойство textView.contentInset.bottom
установлено на верхнюю границу клавиатуры, иначе textView
может прокрутить до пробела, невидимого, за клавиатурой.
См. Это S.O. опубликовать для получения дополнительной информации: What's the UIScrollView contentInset property for?
2) После того, как мои Вставки готовы пойти, и textView
является firstResponder
, я называю следующую функцию:
private func scrollToCursorPositionIfBelowKeyboard() {
let caret = textView.caretRectForPosition(textView.selectedTextRange!.start)
let keyboardTopBorder = textView.bounds.size.height - keyboardHeight!
// Remember, the y-scale starts in the upper-left hand corner at "0", then gets
// larger as you go down the screen from top-to-bottom. Therefore, the caret.origin.y
// being larger than keyboardTopBorder indicates that the caret sits below the
// keyboardTopBorder, and the textView needs to scroll to the position.
if caret.origin.y > keyboardTopBorder {
textView.scrollRectToVisible(caret, animated: true)
}
}
Дополнительный: Если вы просто хотите прокрутки текущей позиции курсора (если предположить, что в настоящее время textView
firstResponder
и contentInset
были правильно установлены до сих пор), просто позвоните:
private func scrollToCursorPosition() {
let caret = textView.caretRectForPosition(textView.selectedTextRange!.start)
textView.scrollRectToVisible(caret, animated: true)
}
Экстренная Информация: Для того, чтобы установить textView
полосы прокрутки на нужную высоту, изменить scrollIndicatorInsets
делать что-то вроде:
// This is not relative to the coordinate plane. You simply set the `.bottom` property
// as if it were a normal height property. The textView does the rest for you.
textView.contentInset.bottom = keyboardHeight
textView.scrollIndicatorInsets = textView.contentInset // Matches textView's visible space.
- 1. Как получить текущую позицию курсора в contenteditable?
- 2. Как изменить начальную позицию курсора внутри UITextView
- 3. Как узнать текущую позицию курсора на странице?
- 4. JQuery - как найти текущую позицию курсора
- 5. Как получить текущую позицию курсора экрана?
- 6. Найти текущую позицию курсора в черепахе Python
- 7. Получить текущую позицию курсора в текстовом поле
- 8. Явная вставка в текущую позицию курсора
- 9. Получить точную позицию курсора из UITextView
- 10. Отменить перестановку курсора и сохранить текущую позицию курсора в EditText
- 11. Получение стиля слова, окружающего текущую позицию курсора
- 12. Как вставить текст в любую позицию курсора в uitextview?
- 13. положение курсора в UITextView
- 14. Как найти текущую позицию курсора в textArea в flex4?
- 15. Erlang: Как получить текущую позицию курсора в файле
- 16. Движение курсора в UITextView на iPad
- 17. Пиксельная позиция курсора в UITextView
- 18. UITextView получить текущую строку
- 19. Как определить текущую позицию курсора текстового поля формы Windows?
- 20. Как получить текущую позицию курсора для текстового виджета
- 21. Как определить текущую позицию курсора с помощью встроенного JS
- 22. IndexedDB - получить позицию курсора
- 23. Показывать текущую позицию курсора в текущей строке и текущем столбце?
- 24. Как установить позицию курсора в Android TextView
- 25. Перемещение курсора в UITextView
- 26. странное позиционирование курсора в UITextView
- 27. Как получить позицию курсора
- 28. Как программно ввести текст в UITextView в текущей позиции курсора
- 29. Как обновить позицию курсора?
- 30. Найти текущую позицию курсора для текстового поля с помощью htmleditorextender