2011-10-05 34 views
2

我试图找到一种简单的方法来在我的iOS应用程序中的标签文本中包含超链接。目标是让用户点击URL,该应用将使用该URL打开Safari浏览器。如何在Cocoa Touch的标签中包含超链接?

我读过关于包含一个URL作为标签的按钮,但这不适用于我的应用程序。

有没有简单的方法来做到这一点?

非常感谢

回答

0

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

+0

是啊,我已经想过使用一个UIWebView 。不过,我仍然坚持如何将超链接包含在标签文本中以最终启动Safari或UIWebView – user965985

+0

我认为ot--建议您使用带有您自己的本地HTML的UIWebView作为创建超链接的方式。 – Luke

+0

你真的想要标签上的(有时是神秘的)网址吗?您可以将“访问xyz-Website”放在那里。这将是描述,其中URL是隐藏给用户的。 –

0

您需要为您的标签启用用户交互,然后重写- (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; 
} 
+0

这不回答OP。如果在文本中的超链接上发生触摸或者没有发生触摸,检查将如何进行? – vikingosegundo

+0

@vikingosegundo我正在做(可能是不正确的),假设UILabel只包含URL。我已经更新了该示例,以限制该操作仅触及在UILabel视图中开始和结束的操作。 –

+0

但是,这不会识别一个标签上其他文本之间超链接的触摸。而不是UILabel的子类,你应该使用UIGestureRecognizer。 – vikingosegundo

相关问题