iOS UILabel网址识别添加点击事件及以富文本形式显示

// 发布动态网址连接跳转设置

- (void) setWebLink {

    //    _detailStr = @"http://www.sports.com/app/newdefault.aspx?type=ios";

    if([_detailStr rangeOfString:@"http"].location !=NSNotFound){

        NSLog(@"yes");

        if ([self urlValidation:_detailStr]==YES) {

            [self textColour];

            _urlStr=_detailStr;

        }

    }else{

        NSLog(@"no");

        if ([self urlValidation:_detailStr]==YES) {

            [self textColour];

            _urlStr = [NSString stringWithFormat:@"http://%@",_detailStr];

        }

    }

}


- (void)setWeb:(NSString *)url {

    UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];

    webView.delegate = self;

    if([url rangeOfString:@"http"].location !=NSNotFound){

        NSLog(@"yes");

        _urlStr=url;

        [self textColour];

    }else{

        NSLog(@"no");

        _urlStr = [NSString stringWithFormat:@"http://%@",url];

    }

    NSURL *ur = [[NSURL alloc] initWithString:_urlStr];

    NSURLRequest *req = [NSURLRequest requestWithURL:ur];

    [webView loadRequest:req];

    [self.view addSubview:webView];

    

}


- (void)webViewDidFinishLoad:(UIWebView *)webView{

    if (webView.request) {

        NSLog(@"有返回");

        [self textColour];

    }

}


/**

 *  网址正则验证

 *

 *  @param string 要验证的字符串

 *

 *  @return 返回值类型为BOOL

 */

- (BOOL)urlValidation:(NSString *)string {

    NSError *error;

    NSString *regulaStr = @"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)";

    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regulaStr options:NSRegularExpressionCaseInsensitive error:&error];

    NSArray *arrayOfAllMatches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])];

    for (NSTextCheckingResult *match in arrayOfAllMatches){

        NSString* substringForMatch = [string substringWithRange:match.range];

        NSLog(@"匹配");

        return YES;

//        [self textColour];

    }

    return NO;

}


- (void)textColour {

        NSMutableAttributedString *abs = [[NSMutableAttributedString alloc]initWithString:_detailStr];

        [abs beginEditing];

        //字体大小

//        [abs addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20.0] range:NSMakeRange(0, 2)];

    

        //字体颜色

        [abs addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor]  range:NSMakeRange(0, _detailStr.length)];

        //下划线

        [abs addAttribute:NSUnderlineStyleAttributeName  value:@(NSUnderlineStyleSingle) range:NSMakeRange(0, _detailStr.length)];

        _detail.attributedText = abs;

        UITapGestureRecognizer *tapss = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(capchaBtn:)];

        _detail.userInteractionEnabled = YES;

        [_detail addGestureRecognizer:tapss];

    

}


// 链接跳转 

- (void)capchaBtn:(UITapGestureRecognizer *)sendr{

    NSLog(@"跳转网页咯");


[[UIApplication  sharedApplication] openURL:[NSURL URLWithString:_urlStr]];

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值