найти расположение {x, y} текста в uilabel - PullRequest
6 голосов
/ 14 февраля 2012

У меня есть строка с сервера, которую я показываю на мультилинии UILabel. Именно в этой строке я идентифицирую некоторую конкретную подстроку. Я хочу поместить кнопку в эту подстроку (кнопка будет подпредставлением UILabel). Для этого мне нужны подстроки координат. Я прошел через это, но я не в состоянии понять это. Предположим, что моя полная строка - abc, 567-324-6554, Нью-Йорк. Я хочу, чтобы 567-324-6554 отображался на кнопке, для которой мне нужны ее координаты. Как использовать ссылку выше, чтобы найти координаты подстроки? Спасибо,

1 Ответ

7 голосов
/ 14 февраля 2012

UILabel не имеет методов для этого.Вы можете сделать это с UITextView, потому что он реализует протокол UITextInput .Вам нужно установить для свойства editable в текстовом представлении значение NO.

Что-то вроде этого непроверенного кода должно работать:

- (CGRect)rectInTextView:(UITextView *)textView stringRange:(CFRange)stringRange {
    UITextPosition *begin = [textView positionFromPosition:textView.beginningOfDocument offset:stringRange.location];
    UITextPosition *end = [textView positionFromPosition:begin offset:stringRange.length];
    UITextRange *textRange = [textView textRangeFromPosition:begin toPosition:end];
    return [textView firstRectForRange:textRange];
}

Это должно вернуть CGRect (всистема координат текстового представления), которая покрывает подстроку, указанную stringRange.Вы можете установить рамку кнопки на этот прямоугольник, если сделаете кнопку подпредставлением текстового представления.

Если подстрока охватывает несколько строк, прямоугольник будет охватывать только первую строку.

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