Кликабельный текст в -drawRect: - PullRequest
1 голос
/ 10 августа 2011

Я рисую строку в UIView, используя -drawRect :.Эта строка может содержать ссылки, и я хотел бы сделать эти ссылки другим цветом и сделать их кликабельными.

Кто-нибудь знает лучший (и самый простой) способ сделать это?Я боюсь, что мне придется отфильтровать ссылки из строки, создать кнопки для ссылок и затем вручную расположить различные части строки, включая кнопки.

Это мой код в -drawRect:

NSString *message = [cellData objectForKey:@"message"];
CGSize messageLabelSize = [sizeCalc sizeOfMessageLabel:message];
[message drawInRect:CGRectMake(kBoxPadding + kProfilePicWidth + kBoxPadding, kBoxPadding + nameLabelSize.height + kSpacingNameToMessage - kContentOffset, messageLabelSize.width, messageLabelSize.height) withFont:[UIFont fontWithName:@"Helvetica" size:13]];

Моя строка сообщения может выглядеть следующим образом:

"Это тестовый текст, в середине которого есть ссылка http://google.com/."

Я бы хотел, чтобы результат выглядел примерно так, как указано выше, где http://google.com/ - гиперссылка.

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Вы не можете из drawRect, потому что это просто рисовать графику, вам нужно подпредставление:

NSString *message = @"This is a test text and it has a link http://google.com/ in the middle.";
CGSize size = [message sizeWithFont:[UIFont boldSystemFontOfSize:11.0]]
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake (0, 0, size.width, size.height)]; 
textVioew.editable = NO;
[textView setDataDetectorTypes:UIDataDetectorTypeLink];
[textView setText:message];
[self.view addSubview:textView];
[textView release];
0 голосов
/ 10 августа 2011

Вы можете использовать UITextView или UIWebView с dataDetectorTypes .

...