如何在Cocoa Touch中的标签中包含超链接?

时间:2011-10-05 16:53:09

标签: iphone objective-c cocoa-touch hyperlink

我正在尝试找到一种在我的iOS应用中在标签文本中包含超链接的简单方法。目标是让用户点击URL,应用程序将打开带有该URL的Safari浏览器。

我已经阅读过包含一个带有URL作为标签的按钮,但这对我的应用程序不起作用。

有一种简单的方法吗?

非常感谢

3 个答案:

答案 0 :(得分:1)

你可以使用NSArrtibutedStrings来实现这一点 - 但我建议使用这个C函数的一些包装器。我喜欢OHAttributedLabel

包含的演示确切地说明了如何处理超链接。

答案 1 :(得分:0)

您可以启动UIWebView,而不是调用Safari。您可以更好地控制用户可以在该网页上执行的操作。

答案 2 :(得分:0)

您需要为标签启用用户互动,然后覆盖- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event方法来处理触摸。

要启用用户互动,请在UILabel上设置以下属性:

urlLabel.userInteractionEnabled = YES;

touchEnded的一个例子: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;
}