如何使用将在safari中打开的链接创建标签?

时间:2014-04-17 11:08:07

标签: ios objective-c webview

我需要给一个包含链接的UILabel。我需要这样做,当触摸链接时,它将在safari中打开。我尝试使用Web视图但它确实加载了。这引出了另一个问题。我用这段代码制作了一个Ui View:

//Stage 1

  [_viewWeb setDelegate:self];

   NSString *fullURL = @"https://www.facebook.com/pages/Restauracja-Hawełka/197503186962278";

   //Stage 2
   NSURL *url =[NSURL URLWithString:fullURL];

   //Stage 3
    NSURLRequest *requestObj =[NSURLRequest requestWithURL:url];

    //Stage 4
    [_viewWeb loadRequest:requestObj];
}



-(void)webViewDidStartLoad:(UIWebView *)webView {

    [_labelLoading setHidden:NO];

}

-(void)webViewDidFinishLoad:(UIWebView *)webView {

    [_labelLoading setHidden:YES];

}
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
   NSLog(@"ERROR VIEW NOT LOADED");}

并且所有内容都在ViewController.h中声明。

但是我一直看到View没有加载消息......我该怎么办?提前致谢!儒略

4 个答案:

答案 0 :(得分:2)

他们有很多方法可以做到这一点,最好的方法是使用UITextVeiw并添加以下属性,现在它将转为链接,每当你将链接作为textview的文本提供时,它将变为tapable,用户将切换到通过点击该链接的野生动物园:

textview.editable = NO;
textview.dataDetectorTypes = UIDataDetectorTypeAll;

如果您不想显示整个链接,那么您只需添加一个UITapgeasture recogonizer并在其操作上添加以下行:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.daledietrich.com"]];

答案 1 :(得分:1)

使用标签,您需要对其进行标记,然后审核非常难看的touchbegan...事件。

相反,您应该使用背景清晰的按钮。 将其单击的事件连接到您的某些自定义方法,称为“launchBrowser”

在launchBrowser:(NSString *)urlString

-(void) launchBrowser
{
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
}

如果您想在Webview中执行所有这些操作并在Safari中启动链接,则需要覆盖 shouldStartLoadWithRequest这样的UIWebviewDelegate方法

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
    if ( inType == UIWebViewNavigationTypeLinkClicked ) {
        [[UIApplication sharedApplication] openURL:[inRequest URL]];
        return NO;
    }

答案 2 :(得分:0)

你不能拥有带链接的UILabel,你可以做的是创建一个背景清晰的按钮:

-(void)viewDidLoad{
    UIButton *linkButton = [[UIButton alloc] initWithFrame:CGRectMake(0,0,100,40)];

    NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:@"Your Link Title"];
    [title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, [title length])];
    [title addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0, [title length])];
    [linkButton setAttributedTitle:title forState:UIControlStateNormal];

    [linkButton addTarget:self action:@selector(openBrowser) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:linkButton];
    ....
}

- (void)openBrowser{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"yourURL"]];
}

答案 3 :(得分:0)

有自定义控件Herehere

您可以使用此控件许多已使用此控件的实时应用。