2

试图使一个简单的链接点击活动工作。我想我了解 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 点击的回调。)

4

1 回答 1

0

尝试设置窗口属性:

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

没有的话可以加一个

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

您可能还需要:

[navigator.window makeKeyAndVisible];
于 2010-02-17T19:05:50.930 回答