我试图找到一种简单的方法来在我的iOS应用程序中的标签文本中包含超链接。目标是让用户点击URL,该应用将使用该URL打开Safari浏览器。如何在Cocoa Touch的标签中包含超链接?
我读过关于包含一个URL作为标签的按钮,但这不适用于我的应用程序。
有没有简单的方法来做到这一点?
非常感谢
我试图找到一种简单的方法来在我的iOS应用程序中的标签文本中包含超链接。目标是让用户点击URL,该应用将使用该URL打开Safari浏览器。如何在Cocoa Touch的标签中包含超链接?
我读过关于包含一个URL作为标签的按钮,但这不适用于我的应用程序。
有没有简单的方法来做到这一点?
非常感谢
您可以通过使用NSArrtibutedStrings
来实现此目的 - 但我会建议围绕此C函数使用一些包装。我喜欢OHAttributedLabel
。
该演示包括精确显示如何处理超链接。
而不是调用Safari你可以启动一个UIWebView。您可以更好地控制用户在该网页上可以执行的操作。
是啊,我已经想过使用一个UIWebView 。不过,我仍然坚持如何将超链接包含在标签文本中以最终启动Safari或UIWebView – user965985
我认为ot--建议您使用带有您自己的本地HTML的UIWebView作为创建超链接的方式。 – Luke
你真的想要标签上的(有时是神秘的)网址吗?您可以将“访问xyz-Website”放在那里。这将是描述,其中URL是隐藏给用户的。 –
您需要为您的标签启用用户交互,然后重写- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
方法来处理触摸。
为了使用户交互设置以下属性对你的UILabel:
urlLabel.userInteractionEnabled = YES;
touchedEnded的例子:WihEvent:在UIViewController:
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch * touch;
CGPoint currPt;
if ((touches = [event touchesForView:urlLabel]))
{
touch = [touches anyObject];
currPt = [touch locationInView:self.view];
if ((currPt.x >= urlLabel.frame.origin.x) &&
(currPt.y >= urlLabel.frame.origin.y) &&
(currPt.x <= (urlLabel.frame.origin.x + urlLabel.frame.size.width)) &&
(currPt.y <= (urlLabel.frame.origin.y + urlLabel.frame.size.height)))
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlLabel.text]];
return;
};
};
return;
}
这不回答OP。如果在文本中的超链接上发生触摸或者没有发生触摸,检查将如何进行? – vikingosegundo
@vikingosegundo我正在做(可能是不正确的),假设UILabel只包含URL。我已经更新了该示例,以限制该操作仅触及在UILabel视图中开始和结束的操作。 –
但是,这不会识别一个标签上其他文本之间超链接的触摸。而不是UILabel的子类,你应该使用UIGestureRecognizer。 – vikingosegundo
这正是我正在寻找的。谢谢! – user965985