尝试让一个简单的链接点击活动起作用。我想我能理解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设置为它的代理。当一个链接被打开时,URL方法被调用,我将自己处理打开的shouldOpenURL。(我计划让navigator处理更多的问题,但我想先让这个简单的例子工作。)
我在viewDidLoad的末尾有一个测试调用:它可以很好地触发委托方法。
问题:我看到使用URL-s可以很好地呈现styledTextLabels,但是当我点击它们时,什么也没有发生。由于某种原因,它们不能到达TTNavigator,我不明白为什么。感觉像是我错过了一些简单的连接/脚手架,但又搞不清楚。
如何使在styledtextlabel中点击的链接到达导航器代理?或者我应该如何用styledtextlabel实现这个简单的例子呢?(只想获得url点击的回调。)
发布于 2010-02-18 03:05:51
尝试设置窗口属性:
TTNavigator* navigator = [TTNavigator navigator];
navigator.window = window;如果你没有,你可以添加一个
navigator.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]您可能还需要:
[navigator.window makeKeyAndVisible];https://stackoverflow.com/questions/2188841
复制相似问题