2010-02-03 88 views
2

尝试进行简单的链接点击活动工作。我认为我理解TTNavigator和TTStyledLabel,但无法使其工作。TTNavigator点击TTStyledTextLabels中的链接时不能打开URL

代码:

一个视图控制器内
@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 

即,让导航,并设置自己是其代表。当一个链接被打开时,shouldOpenURL delgate方法被调用,我将在那里处理打开我自己的URL。 (我打算让导航员处理更多的问题,但希望得到这个简单的案例工作第一。)

我有一个测试调用在viewDidLoad结束:这将触发委托方法罚款。

问题:我看到styledTextLabels在URL-s下显示正常,但是当我点击这些时,没有任何反应。他们没有达到TTNavigator出于某种原因,我不明白为什么。感觉我在某处丢失了一些简单的连接/脚手架,但无法弄清楚。

如何使其在样式文本标签中点击的链接将到达导航器委托?或者我应该如何使用styledtextlabel实现这个简单的例子? (只是想回调URL水龙头。)

回答

0

尝试设置窗口属性:

TTNavigator* navigator = [TTNavigator navigator]; 
navigator.window = window; 

如果你没有一个你可以添加一个

navigator.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] 

您可能还需要:

[navigator.window makeKeyAndVisible];