iPhone: - 从标签文本链接识别

时间:2012-12-20 05:41:01

标签: iphone objective-c uilabel

在我的iPhone应用程序中,我想以不同颜色显示标签内的链接(如超链接)。

当有人点击该链接时,它应该在Safari浏览器中打开该链接。

我该怎么办?

3 个答案:

答案 0 :(得分:2)

听到两个示例示例代码链接是吼,希望它能帮助您: -

https://github.com/twotoasters/TTTAttributedLabel

http://furbo.org/stuff/FancyLabel_1.0.zip

或者您也可以这样做

将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];

Then implement the action method:

    - (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 :(得分:1)

我们使用正则表达式检查链接

NSString *urlRegEx =@"((http|https)://)?((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
if ([urlTest evaluateWithObject:lbl.text])
{
       //set color of lbl
}

答案 2 :(得分:0)

标签中没有任何内容可以识别超链接。

制作一个看起来像标签的自定义按钮(只有文字和背景为clearColor)才能产生效果。