Подтвердить что ты не робот

Позиция курсора в UITextView

Я ищу не личный способ найти позицию курсора или каретки (мигающую панель) в UITextView, желательно как CGPoint.

Возможно, такой вопрос уже существует, но он не дает окончательного способа сделать это. А также, Я не имею в виду NSRange выбранной области.

4b9b3361

Ответ 1

Просто получил его в другом потоке:

Требуется iOS 3.2 или новее.

CGPoint cursorPosition = [textview caretRectForPosition:textview.selectedTextRange.start].origin;

Не забудьте проверить, что selectedTextRange не равен нулю перед вызовом этого метода. Вы также должны использовать selectedTextRange.empty, чтобы проверить, что это позиция курсора, а не начало текстового диапазона. Итак:

if (textview.selectedTextRange.empty) {
// get cursor position and do stuff ...
}

Пиксельная позиция курсора в UITextView

Ответ 2

Версия SWIFT 2.1:

let cursorPosition = infoTextView.caretRectForPosition( (infoTextView.selectedTextRange?.start)! ).origin

print("cursorPosition:\(cursorPosition)")

Ответ 3

Нет такого пути. Полная остановка.

Единственное, что вы могли бы сделать, чтобы приблизиться, - это параллельно выложить текст с помощью CoreText, там исчислите положение текста из точки и примените его к UITextView. Это, однако, работает только с не-0 выборами. Кроме того, CoreText имеет другой механизм компоновки текста, например, поддерживает кернинг, который UITextView не делает. Это может привести к отклонениям вынесенного и выложенного текста и, таким образом, дать субоптимальные результаты.

Нет абсолютно никакого способа позиционировать каретку. Эта задача даже очень важна, если вы используете частный API. Это просто один из многих "просто не" в iOS.