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]];
}
发布动态网址连接跳转设置
- (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]];
}
相关文章推荐
- 【ios开发学习】UILabel添加点击事件
- IOS 自定义UIBUTTON 直接拖个xib 就能在button上显示多行文本 并且添加了点击的效果
- iOS 文本添加点击事件
- iOS 给UIView、UIImageView、UILabel添加点击事件
- 富文本添加颜色大小及点击事件,防止最后一句断行显示。
- iOS-85-UILabel等控件添加手势点击事件(UITapGestureRecognizer)
- [IOS]为UILabel添加点击事件
- [IOS]为UILabel添加点击事件
- IOS 自定义UIBUTTON 直接拖个xib 就能在button上显示多行文本 并且添加了点击的效果
- 关于ios中UILabel上添加事件
- UILabel添加点击事件
- iOS给背景添加点击事件
- iOS开发——给ImageView添加点击事件
- iOS UILabel显示HTML文本
- iOS:UIImageView添加点击事件
- 点击事件添加高亮显示
- ios 动态添加了按钮,绑定同一个点击事件,如何判断点击的是哪个?
- iOS 在添加了UITapGestureRecognizer的UIView上响应按钮的点击事件
- 为ios控件添加点击事件,以及点击效果
- iOS:UIImageView添加点击事件