Как вам использовать TTStyledTextLabel?

Все, что я хочу, это отобразить простой текст в моем viewController и автоматически разбирать гиперссылки. Когда пользователь нажимает на ссылку, я хочу, чтобы элемент управления как-то сделал обратный вызов, где я могу что-то сделать с URL. Как мне этого добиться?

Я уже часами просматривал TTCatalog. Я также попытался изучить исходный код Three20 и трассировку стека. Нет помощи. Я просто не могу понять, как мое приложение может реагировать на нажатие URL. Любые намеки, пожалуйста?

2 ответа

Решение

Трудно помочь, не видя того, что вы уже пробовали, но вы должны быть в состоянии сделать что-то вроде следующего:

TTStyledTextLabel* label = [[[TTStyledTextLabel alloc] 
        initWithFrame:someFrame] autorelease];
NSString* labelText = @"This should <a href=\"custom-uri://some/url\">work</a>";
label.text = [TTStyledText textFromXHTML:labelText lineBreaks:NO URLs:YES];
[someView addSubview:label];

Вы можете использовать TTNavigator а также TTURLMap на карту custom-uri://some/url к конкретному контроллеру в вашем приложении, или обработайте его самостоятельно в своем делегате приложения. Лучшее место, чтобы узнать, как это сделать, это посмотреть на TTNavigatorDemo Пример приложения, включенного в источник Three20. В частности, посмотрите на AppDelegate.m, где выполняется все сопоставление URL.

В дополнение к тому, что Натан говорит о сопоставлении URL-адресов и ссылок, вы также можете использовать стили CSS!

TTStyledTextLabel* label = [[[TTStyledTextLabel alloc] initWithFrame:someFrame] autorelease];
NSString* labelText = @"This should <a href=\"custom-uri://some/url\">work</a> and 
<span class=\"redText\">this should be red</span>";
label.text = [TTStyledText textFromXHTML:labelText lineBreaks:NO URLs:YES];
[someView addSubview:label];

Затем в вашем StyleSheet.m реализовать

- (TTStyle*) redText {
  return [TTTextStyle styleWithFont:[UIFont systemFontOfSize:12] color:RGBCOLOR(255,0,0) next:nil];
}
Другие вопросы по тегам