我正处于我的第一个简单的iPhone应用程序的最后阶段。我正在构建一个“约”视图,包含信用/信息/等。
我在最简单的事情上失败了:如何在文本中嵌入超链接?我目前正在使用带有UILabel的UIView作为文本。
我已经在这里查看了示例应用程序,但没有到达任何地方。我应该使用UIWebView吗?
THX。
答案 0 :(得分:11)
是的,使用UIWebView并在其中放入静态HTML。
像这样:
[myWebView loadHTMLString:@"<html><head></head><body style=\"font-family: sans-serif;\"> .... </body></html>" baseURL:nil];
答案 1 :(得分:6)
要在指定的网址
启动网络浏览器NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"];
[[UIApplication sharedApplication] openURL:target];
此代码可以在任何地方运行。我对UILabel进行了分类,添加了touchsEnded方法并将其放在那里。 (别忘了设置labelname.userInteractionEnabled = YES;)
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
NSURL *target = [[NSURL alloc] initWithString:@"http://www.stackoverflow.com"];
[[UIApplication sharedApplication] openURL:target];
}
答案 2 :(得分:4)
您可以通过使用您希望显示的网址调用 UIApplication openURL:方法来触发Safari。 这将关闭您的应用程序,然后打开safari(或mail / youtube / etc)。
你会想要以某种方式建立你的链接,也许是在按钮中。那部分取决于你。
如果要将html内容嵌入到视图中,请务必使用UIWebView。
文档:
答案 3 :(得分:4)
UIWebView可能是错误的方法。对于像这样的事情来说,非常太过分了。您应该查看名为LRLinkableLabel的Github项目。
它会自动检测.text
属性中的所有网址。
您可以像这样使用它:
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];
}
您还可以使用linkColor
和textColor
属性配置标签的外观。从这一点开始,您可以像使用任何其他UILabel一样使用它。
请务必在完成所有工作后将delegate
设置为nil
,以确保所有内容都已清理完毕。
希望这有帮助。
答案 4 :(得分:1)
谢谢Frank和Ryan。
除了Frank的方向,我还需要实现UIWebViewDelegate,并在Interface Builder中链接到它。原因是点击的每个链接都会在我的应用程序中打开(无法导航......)。我只需要实现这个方法,用适当的应用程序打开每个URL:
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
[[UIApplication sharedApplication] openURL:request.URL];
return false;
}
return true;
}