您的位置:首页 > 产品设计 > UI/UE

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

2016-09-29 18:15 288 查看
//
发布动态网址连接跳转设置

- (void) setWebLink {

   
//    _detailStr = @"http://webtest.917sports.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]];

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