Положение курсора в UITextView - PullRequest
       27

Положение курсора в UITextView

12 голосов
/ 09 сентября 2010

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

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

Ответы [ 4 ]

20 голосов
/ 15 декабря 2011

Только что получил в другой теме:

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

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

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

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

Пиксельное положение курсора в UITextView

2 голосов
/ 11 ноября 2015

SWIFT 2.1 версия:

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

print("cursorPosition:\(cursorPosition)")
0 голосов
/ 01 марта 2018

Swift 4 версия:

// lets be safe, thus if-let
if let selectedTextRange = textView.selectedTextRange {
    let caretPositionRect = textView.caretRect(for: selectedTextRange.start)
    let caretOrigin = caretPositionRect.origin
    print(">>>>> position rect: \(caretPositionRect), origin: \(caretOrigin)")
}

Мы просто используем textView.selectedTextRange, чтобы получить выбранный диапазон текста, а затем textView.caretRect(for:), чтобы получить CGRect определяющую позицию каретки.

0 голосов
/ 10 сентября 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...