在UITableViewCell中有超链接的UILabel应该打开safari webbrowser吗?

时间:2011-05-08 16:56:16

标签: iphone objective-c

我有一个带有两个标签的自定义UITableViewCellUILabel)。表格单元格用于显示信息/文本。在其中一些单元格(不是全部)中,以这种方式设置文本:

cell.myTextlabel.text = @"http://www.google.de"

现在我想要点击这个文本/链接,一个safari webbrowser应该打开这个网页。我怎么能这样做?

最诚挚的问候蒂姆。

4 个答案:

答案 0 :(得分:9)

将userInteractionEnabled设置为标签的YES,并为其添加手势识别器:

myLabel.userInteractionEnabled = YES;

UITapGestureRecognizer *gestureRec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(openUrl:)];
gestureRec.numberOfTouchesRequired = 1;
gestureRec.numberOfTapsRequired = 1;
[myLabel addGestureRecognizer:gestureRec];
[gestureRec release];

然后实现动作方法:

- (void)openUrl:(id)sender
{
    UIGestureRecognizer *rec = (UIGestureRecognizer *)sender;

    id hitLabel = [self.view hitTest:[rec locationInView:self.view] withEvent:UIEventTypeTouches];

    if ([hitLabel isKindOfClass:[UILabel class]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:((UILabel *)hitLabel).text]];
    }
}

答案 1 :(得分:4)

如果您使用UITextView而不是UILabel,它会自动处理链接检测。将视图的dataDetectorTypes设置为UIDataDetectorTypeLink

答案 2 :(得分:0)

您可以添加UITapGestureRecognizer,也可以使用UIButtons并将其设计为标签。

对于UITapGestureRecognizer:

How to customize UILabel clickable

对于UIButton:

将UIButton的类型从Rounded Rect更改为custom。

答案 3 :(得分:0)

在点击事件中,您可以通过以下代码打开Safari浏览器     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@“http://www.google.com”]];