Получение позиции курсора в UITextView на iPhone? - PullRequest
27 голосов
/ 06 марта 2009

В нашем приложении для iPhone есть UITextView, который можно редактировать. Нам нужно вставить некоторый текст в место расположения курсора, когда пользователи нажимают некоторые кнопки панели инструментов, но не могут найти документированный (или недокументированный) метод поиска текущего местоположения курсора.

У кого-нибудь есть идеи или кто-то еще достиг чего-либо подобного?

Ответы [ 4 ]

32 голосов
/ 06 марта 2009

Как сказал Дрю, вы можете использовать selectedRange UITextView для возврата точки вставки. Длина этого диапазона всегда равна нулю. Пример ниже показывает, как это сделать.

NSString *contentsToAdd = @"some string";
NSRange cursorPosition = [tf selectedRange];
NSMutableString *tfContent = [[NSMutableString alloc] initWithString:[tf text]];
[tfContent insertString:contentsToAdd atIndex:cursorPosition.location];
[theTextField setText:tfContent];
[tfContent release];
10 голосов
/ 06 марта 2009

Используйте свойство UITextView selectedRange, чтобы найти точку вставки, когда текстовое представление является первым респондентом. В противном случае, когда представление не в фокусе, это свойство возвращает NSNotFound. Если вам нужно знать положение курсора в этом случае, рассмотрите возможность подкласса UITextView и переопределения метода canResignFirstResponder, где вы можете сохранить положение курсора в переменной-члене.

8 голосов
/ 06 марта 2009

Вы пробовали UITextView.selectedRange? Он возвращает NSRange, элемент местоположения которого должен сообщать вам, где находится курсор.

6 голосов
/ 01 марта 2018

Swift 4 :

// lets be safe, thus if-let
if let cursorPosition = textView.selectedTextRange?.start {
    // cursorPosition is a UITextPosition object describing position in the text

    // if you want to know its position in textView in points:
    let caretPositionRect = textView.caretRect(for: cursorPosition)
}

Мы просто используем textView.selectedTextRange, чтобы получить выбранный диапазон текста, и позиция курсора находится в позиции start.

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