试图使一个简单的链接点击活动工作。我想我了解 TTNavigator 和 TTStyledLabel,但无法使其正常工作。
代码:
@interface SomeVc : UIViewController <TTNavigatorDelegate> {
IBOutlet TTStyledTextLabel *styledTextLabel;
}
@end
@implementation SomeVc
- (void)viewDidLoad {
[super viewDidLoad];
navigator = [TTNavigator navigator];
navigator.persistenceMode = TTNavigatorPersistenceModeNone;
navigator.delegate = self;
TTURLMap* map = navigator.URLMap;
[map from:@"*" toViewController:[TTWebController class]];
styledTextLabel.text = [TTStyledText textWithURLs:someText];
[navigator openURLAction:[TTURLAction actionWithURLPath:@"http://www.cnn.com/"]];
}
- (BOOL)navigator: (TTNavigator*)navigator shouldOpenURL: (NSURL*)URL {
NSLog(@"trying to open %@", [URL absoluteString]);
return NO;
}
@end
即在视图控制器中,获取导航器并将 self 设置为它的代表。打开链接时,将调用 shouldOpenURL 的 delgate 方法,我将自己处理打开的 URL。(我打算让 navigator 处理更多,但想先让这个简单的案例工作。)
我在 viewDidLoad: 末尾有一个测试调用,可以很好地触发委托方法。
问题:我看到 styledTextLabels 使用 URL-s 渲染得很好,但是当我点击它们时,什么也没有发生。由于某种原因,他们没有到达 TTNavigator,我不明白为什么。感觉就像我在某处缺少一些简单的连接/脚手架,但无法弄清楚。
如何使在 styledtextlabel 中点击的链接能够到达导航器委托?或者我应该如何使用 styledtextlabel 实现这个简单的案例?(只想获取 url 点击的回调。)