2011-07-08 7 views
0

IFTweetLabelを使用していて、リンクを認識していましたが、IFTweetLabelが作成するボタンでWebviewを開いています。私はNSLogを実行していて、ボタンが押されたときに各リンクを理解していることをはっきりと見ることができますが、何らかの理由でURLが開かれません。IFTweetLabel RegexKitLite open UIWebView

以下は、私がビューを表示し、文字列をwebViewにロードするために使用しているコードです。これらはすべて、webviewの読み込み以外に機能します。

ご意見をいただければ幸いです。ありがとうございました!

- (void)handleTweetNotification:(NSNotification *)notification 

{ 
[UIView beginAnimations:@"animateView" context:nil]; 
[UIView setAnimationDuration:1.0]; 

CGRect viewFrame = [MainwebView frame]; 
viewFrame.origin.x = 220; 
MainwebView.frame = viewFrame;   

MainwebView.alpha = 1.0; 
web.alpha = 1.0; 

MainwebView.layer.shadowColor = [[UIColor blackColor] CGColor]; 
MainwebView.layer.shadowOffset = CGSizeMake(1.0f, 1.0f); 
MainwebView.layer.shadowRadius = 8.0f; 
MainwebView.layer.shadowOpacity = 1.0f;  



[self.view addSubview:MainwebView]; 
[UIView commitAnimations]; 
[web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:tweetLabel.text]]]; 

NSLog(@"handleTweetNotification: WTF notification = %@", notification); 
} 

答えて

1

はうまく動作するはずです私のコードですが、またいくつかをクリーンアップする必要があります。

- (void)handleTweetNotification:(NSNotification *)notification {  

    unichar theChar = [(NSString *)notification.object characterAtIndex:0]; 
    NSString *theString = (NSString *)notification.object; 


    if ([[NSString stringWithCharacters:&theChar length:1] isEqualToString:@"#"]) { 
     DLog(@"This is a hashtag"); 
     theString = [theString stringByReplacingOccurrencesOfString:@"#" withString:@"%23"]; 
     NSURL *hashtagURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://twitter.com/#!/search?q=%@", theString]]; 
     WebViewController *theWebVC = [[WebViewController alloc] init]; 
     theWebVC.request = [NSURLRequest requestWithURL:hashtagURL]; 
     UINavigationController *theNavigationVC = [[UINavigationController alloc] initWithRootViewController:theWebVC]; 
     [self presentModalViewController:theNavigationVC animated:YES]; 

    } 

    if ([[NSString stringWithCharacters:&theChar length:1] isEqualToString:@"@"]) { 
     DLog(@"This is a Mention"); 
     theString = [theString stringByReplacingOccurrencesOfString:@"@" withString:@""]; 
     NSURL *mentionURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://twitter.com/%@", theString]]; 
     WebViewController *theWebVC = [[WebViewController alloc] init]; 
     theWebVC.request = [NSURLRequest requestWithURL:mentionURL]; 
     UINavigationController *theNavigationVC = [[UINavigationController alloc] initWithRootViewController:theWebVC]; 
     [self presentModalViewController:theNavigationVC animated:YES]; 

    } 
    if ([[NSString stringWithCharacters:&theChar length:1] isEqualToString:@"h"]) { 
     DLog(@"This is a hyperlink"); 
     theString = [[theString componentsSeparatedByString: @"\n"] objectAtIndex:0]; 
     NSURL *hyperlinkURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@", theString]]; 
     WebViewController *theWebVC = [[WebViewController alloc] init]; 
     theWebVC.request = [NSURLRequest requestWithURL:hyperlinkURL]; 
     UINavigationController *theNavigationVC = [[UINavigationController alloc] initWithRootViewController:theWebVC]; 
     [self presentModalViewController:theNavigationVC animated:YES]; 
    } 
} 
1

ユーザーがクリックした文字列がこのメソッドに渡され、[通知オブジェクト]を使用して見つけることができます。あなたのコードでやっていることは、あなたのtweetLabelの中のすべてのテキストをwebviewに渡すことです。これはURLではないため、アプリがクラッシュします。これを代わりに使用してください: [web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[notification object]]]];

また、[通知オブジェクト]をNSLogして、URLであることを確認することもできます。ここで