2012-02-14 7 views
6

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

+1

UILabel является многострочным – freind

ответ

7

UILabel не имеет способа для этого. Вы можете сделать это с UITextView, потому что он реализует UITextInput protocol. Вам нужно будет установить свойство 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. Вы можете установить рамку кнопки на этот прямоугольник, если вы сделаете кнопку подведомственным текстовому виду.

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

+0

Я хочу найти x и y этой строки «***» в UITextView, может ли помочь мне thx bro – freind

+2

Прочтите мой ответ. –

+0

Я пытаюсь сделать это, но его ошибка CGRect * varf = [self rectInTextView: select4 stringRange: @ "***"]; – freind

Смежные вопросы