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

つまり、viewcontroller 内で、ナビゲーターを取得し、self をそのデリゲートに設定します。リンクが開かれると、shouldOpenURL デリゲート メソッドが呼び出され、ここで自分自身で URL を開く処理を行います。(ナビゲーターにもっと処理させる予定ですが、最初にこの単純なケースを機能させたいと考えています。)

viewDidLoad: の最後にテスト呼び出しがあります。これにより、デリゲート メソッドが正常に起動されます。

問題: styledTextLabels が URL で適切にレンダリングされているのを確認できますが、それらをタップしても何も起こりません。なんらかの理由で 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 に答える