您的位置:首页 > 其它

实现Label文本内容中电话号码特殊颜色显示并点击电话号码能拨打

2016-12-05 21:37 375 查看
[objc]
view plain
copy

print?

//获取字符串中的电话号码  
NSString *regulaStr = @"\\d{3,4}[- ]?\\d{7,8}";  
NSRange stringRange = NSMakeRange(0, _contentStr.length);  
//正则匹配  
NSError *error;  
NSRegularExpression *regexps = [NSRegularExpression regularExpressionWithPattern:regulaStr options:0 error:&error];  
if (!error && regexps != nil) {  
    [regexps enumerateMatchesInString:_contentStr options:0 range:stringRange usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOLBOOL * _Nonnull stop) {  
  
        //可能为电话号码的字符串及其所在位置  
        //           NSString *actionString = [NSString stringWithFormat:@"%@",[_contentStr substringWithRange:result.range]];  
        NSRange phoneRange = result.range;  
  
        //            NSLog(@"%@-----%@", actionString, NSStringFromRange(phoneRange));  
  
        //设置文本中的电话号码显示为蓝色  
        NSMutableAttributedString *str = [[NSMutableAttributedString alloc]initWithString:_contentStr];  
        [str addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:phoneRange];  
        _contenLabel.attributedText = str;  
  
        //点击拨打电话  
        UIControl *phoneControl = [_contenLabel viewWithTag:1234];  
        if (phoneControl == nil) {  
            UIControl *phoneControl = [[UIControl alloc] initWithFrame:[self boundingRectForCharacterRange:phoneRange]];  
            phoneControl.tag = 1234;  
            [phoneControl addTarget:self action:@selector(phoneLink) forControlEvents:UIControlEventTouchUpInside];  
            [_contenLabel addSubview:phoneControl];  
        }  
          
    }];  
}  



//获取字符串中的电话号码
NSString *regulaStr = @"\\d{3,4}[- ]?\\d{7,8}";
NSRange stringRange = NSMakeRange(0, _contentStr.length);
//正则匹配
NSError *error;
NSRegularExpression *regexps = [NSRegularExpression regularExpressionWithPattern:regulaStr options:0 error:&error];
if (!error && regexps != nil) {
[regexps enumerateMatchesInString:_contentStr options:0 range:stringRange usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {

//可能为电话号码的字符串及其所在位置
//           NSString *actionString = [NSString stringWithFormat:@"%@",[_contentStr substringWithRange:result.range]];
NSRange phoneRange = result.range;

//            NSLog(@"%@-----%@", actionString, NSStringFromRange(phoneRange));

//设置文本中的电话号码显示为蓝色
NSMutableAttributedString *str = [[NSMutableAttributedString alloc]initWithString:_contentStr];

4000
[str addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:phoneRange];
_contenLabel.attributedText = str;

//点击拨打电话
UIControl *phoneControl = [_contenLabel viewWithTag:1234];
if (phoneControl == nil) {
UIControl *phoneControl = [[UIControl alloc] initWithFrame:[self boundingRectForCharacterRange:phoneRange]];
phoneControl.tag = 1234;
[phoneControl addTarget:self action:@selector(phoneLink) forControlEvents:UIControlEventTouchUpInside];
[_contenLabel addSubview:phoneControl];
}

}];
}

其中_contentStr为_contentLabel要显示的文本内容

效果如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: