我正在第一个简单的iPhone应用程序的最后一段。我正在建立一个“关于”的观点,用credit/info /等。iPhone应用程序的“约”文本中的超链接
我在最简单的事情上失败:如何将超链接嵌入到文本中?我目前正在使用带有UILabel的UIView文本。
我已经看过这里,和示例应用程序,但没有得到任何地方。我应该使用UIWebView吗?
Thx。
我正在第一个简单的iPhone应用程序的最后一段。我正在建立一个“关于”的观点,用credit/info /等。iPhone应用程序的“约”文本中的超链接
我在最简单的事情上失败:如何将超链接嵌入到文本中?我目前正在使用带有UILabel的UIView文本。
我已经看过这里,和示例应用程序,但没有得到任何地方。我应该使用UIWebView吗?
Thx。
是的,使用一个UIWebView并把静态HTML。
像这样:
[myWebView loadHTMLString:@"<html><head></head><body style=\"font-family: sans-serif;\"> .... </body></html>" baseURL:nil];
你可以通过调用的UIApplication的OpenURL触发Safari浏览器:法要显示的URL。 这将关闭你的应用程序,然后打开safari(或邮件/ youtube /等)。
你会想让你的链接以某种方式,也许在一个按钮。这部分取决于你。
如果您想要将html内容嵌入到您的视图中,那么请尽量使用UIWebView。
链接需要iPhone开发人员中心登录。
感谢弗兰克和瑞安。
除了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;
}
在指定的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];
}
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];
}
您还可以使用linkColor
和textColor
属性来配置标签的外观。从这一点上,您可以像使用其他UILabel一样使用它。
当您全部完成以确保一切都清理完毕后,请记得将delegate
设置为nil
。
希望这会有所帮助。