2009-07-23 3 views
7

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

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

+1

Почему вы не используете UIWebView? Когда вы нажимаете ссылку в webView, UIWebViewDelegate получает сообщение shouldStartLoadWithRequest – oxigen

ответ

11

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

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.

+0

Отличный старт! Можете ли вы дать краткий пример того, как использовать TTNavigator и TTURLMap, чтобы сказать, чтобы нажать контроллер, когда нажимается URL? – erotsppa

+0

Я обновил свой ответ, чтобы указать вам в правильном направлении, чтобы узнать, как работает файл сопоставления URL. –

+0

Эта система картографирования url не будет работать для этого вопроса, правильно? Похоже, что url должен быть предварительно установлен разработчиком и не работает с текстом, который предоставляется пользователем. Я хочу, чтобы TTStyledTextLabel отображал какой-то текст от пользователя и анализировал все гиперссылки и выполнял одно и то же действие при нажатии. – erotsppa

0

В дополнение к тому, что говорит Натан о сопоставлении 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]; 
} 
Смежные вопросы