如何点击UILabel的部分文本?

时间:2014-05-13 06:07:48

标签: ios uilabel

我有一个名为lblApple的简单标签,其中包含文字“这是一个苹果,苹果非常好”。

现在,当用户点击UIlabel的特定部分时,例如,如果用户在该标签中点击“好”,那么我希望该字符串“好”。

我添加了点击手势和所有这些东西,但我找不到任何解决方案。

有人知道吗?

由于

2 个答案:

答案 0 :(得分:0)

您可以使用https://github.com/mattt/TTTAttributedLabel。这提供了在标签中添加链接的功能。因此,您可以检测链接是否被点击。你可以在你的例子中作为一个链接。因此,如果用户点击好,您就可以处理该操作。您需要在此处自定义链接的样式。

来源:Tap Gesture on part of UILabel

答案 1 :(得分:0)

//编写一个正则表达式来匹配表达式下面的简单字符串是为了找到字符串中的url

 NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"(? i)\\b((?:[a-z][\\w-]+:(?:/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”‘’]))" options:NSRegularExpressionCaseInsensitive error:NULL];

// 说明是您的文字 descriptionLabel 是您的TTTAttributedLabel

分配代表

descriptionLabel.delegate = self;

查找正则表达式的匹配

 [regexp enumerateMatchesInString:description options:0 range:NSMakeRange(0, [description length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags __unused, BOOL *stop __unused){

            NSURL *url = [NSURL URLWithString:[description substringWithRange:match.range]];
            [descriptionLabel addLinkToURL:url withRange:match.range];

}];

这是OnClick方法:

- (void)attributedLabel:(TTTAttributedLabel *)label
 didSelectLinkWithURL:(NSURL *)url
 {
  NSlog("%@",label.text);
 }