2009-01-11 60 views
8

我正在第一个简单的iPhone应用程序的最后一段。我正在建立一个“关于”的观点,用credit/info /等。iPhone应用程序的“约”文本中的超链接

我在最简单的事情上失败:如何将超链接嵌入到文本中?我目前正在使用带有UILabel的UIView文本。

我已经看过这里,和示例应用程序,但没有得到任何地方。我应该使用UIWebView吗?

Thx。

回答

11

是的,使用一个UIWebView并把静态HTML。

像这样:

[myWebView loadHTMLString:@"<html><head></head><body style=\"font-family: sans-serif;\"> .... </body></html>" baseURL:nil]; 
4

你可以通过调用的UIApplication的OpenURL触发Safari浏览器:法要显示的URL。 这将关闭你的应用程序,然后打开safari(或邮件/ youtube /等)。

你会想让你的链接以某种方式,也许在一个按钮。这部分取决于你。

如果您想要将html内容嵌入到您的视图中,那么请尽量使用UIWebView。

链接需要iPhone开发人员中心登录。

UIApplication openURL:

iPhone URL Scheme Reference

1

感谢弗兰克和瑞安。

除了Frank的指导,我还需要实现UIWebViewDelegate,并在Interface Builder中链接到它。原因是每个被点击的链接都会在我的应用程序中打开(没有可能的导航...)。我只需要实现此方法与适当应用打开所有网址:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
     [[UIApplication sharedApplication] openURL:request.URL]; 
     return false; 
    } 
    return true; 
} 
6

在指定的URL启动网页浏览器:

NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"]; 
[[UIApplication sharedApplication] openURL:target]; 

该代码可以在任何地方运行。我对UILabel进行了分类,添加了touchedsEnded方法并将其放置在那里。 (不要忘记设置labelname.userInteractionEnabled = YES;)

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"]; 
    [[UIApplication sharedApplication] openURL:target]; 
} 
4

UIWebView的可能是错误的方式来做到这一点。这是非常这样的东西太多矫枉过正。你应该看看一个名为的Github项目。

它会自动检测.text属性中的任何URL。

您可以使用它像这样:

LRLinkableLabel *label = [[LRLinkableLabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)]; 
label.delegate = self; 
label.text = @"Check out http://dundermifflin.com to find some great paper deals!"; 

然后,只需确保self实现此方法:

- (void) linkableLabel:(LRLinkableLabel *)label clickedButton:(UIButton *)button forURL:(NSURL *)url { 
    [[UIApplication sharedApplication] openURL:url]; 
} 

您还可以使用linkColortextColor属性来配置标签的外观。从这一点上,您可以像使用其他UILabel一样使用它。

当您全部完成以确保一切都清理完毕后,请记得将delegate设置为nil

希望这会有所帮助。