您如何使用TTStyledTextLabel?

时间:2009-07-23 14:16:15

标签: iphone three20

我想要的只是在我的viewController中显示一些简单的文本,并自动进行超链接。当用户点击链接时,我希望控件以某种方式进行回调,我可以使用URL执行某些操作。我怎样才能做到这一点?

我已经查看了TTCatalog几个小时了。我也尝试查看three20的源代码以及查看堆栈跟踪。没有帮助。我无法弄清楚我的应用程序如何对URL的点击做出反应。有什么提示吗?

2 个答案:

答案 0 :(得分: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];

然后,您可以使用TTNavigatorTTURLMapcustom-uri://some/url映射到应用程序中的特定控制器,或者在应用程序委托中自行处理。查看如何执行此操作的最佳位置是查看Three20源中包含的TTNavigatorDemo示例应用程序。具体来说,请查看AppDelegate.m,这是执行所有URL映射的地方。

答案 1 :(得分:0)

除了Nathan关于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];
}