YYText识别链接和点击事件

在使用YYLabel时有个比较麻烦的事情,就是YYLabel无法自动识别链接。因此我写了一个正则表达式来解决这个问题。

NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"这里传入富文本"];;
// 匹配条件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\\.\\-~!@#$%^&*+?:_/=<>]*)?)";NSError *error = NULL;// 根据匹配条件,创建了一个正则表达式NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regulaStr options:NSRegularExpressionCaseInsensitive error:&error];if (!regex) {NSLog(@"正则创建失败error!= %@", [error localizedDescription]);} else {NSArray *allMatches = [regex matchesInString:attrStr.string options:NSMatchingReportCompletion range:NSMakeRange(0, attrStr.string.length)];for (NSTextCheckingResult *match in allMatches) {NSString *substrinsgForMatch2 = [attrStr.string substringWithRange:match.range];NSMutableAttributedString *one = [[NSMutableAttributedString alloc] initWithString:substrinsgForMatch2];// 利用YYText设置一些文本属性one.yy_font = [UIFont systemFontOfSize:self.viewSetting.companyLabelFontSize];one.yy_underlineStyle = NSUnderlineStyleSingle;one.yy_color = ThemeColor;YYTextBorder *border = [YYTextBorder new];border.cornerRadius = 3;border.insets = UIEdgeInsetsMake(-2, -1, -2, -1);//设定颜色则点击的时候,点击链接的时候链接颜色不会变// border.fillColor = [UIColor greenColor];YYTextHighlight *highlight = [YYTextHighlight new];[highlight setBorder:border];[highlight setColor:[UIColor redColor]];[one yy_setTextHighlight:highlight range:one.yy_rangeOfAll];// 根据range替换字符串[attrStr replaceCharactersInRange:match.range withAttributedString:one];}}yyLabel.attributedText = attrStr;//  获得YYLabel的布局信息YYTextContainer *container = [YYTextContainer containerWithSize:CGSizeMake(kScreen_Width-10*2, MAXFLOAT)];YYTextLayout *textLayout = [YYTextLayout layoutWithContainer:container text:attrStr];yyLabel.textLayout = textLayout;WEAK_SELFyyLabel.highlightTapAction = ^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect) {NSLog(@"点击链接%@",[text.string substringWithRange:range]);};CGFloat yyLabelHeight = textLayout.textBoundingSize.height;

YYText识别链接和点击事件相关推荐

  1. YYText识别链接点击效果和输出点击的内容

    - (void)testUrl{ // 测试文本 NSString *text = @"发呆发https://blog.csdn.net/a18339063397呆发的负担发的分身乏术对方的 ...

  2. js为链接绑定点击事件并且附带return false;来阻止跳转

    <!DOCTYPE HTML> <html><head><meta charset="gb2312" /><title> ...

  3. iostext添加点击事件_iOS给UILabel添加点击事件

    前言:笔者最近需要实现给UILabel中的链接添加点击事件的功能.使用so.com查了下,发现TTTAttributedLabel的封装程度比较好.整理了TTTAttributedLabel的基本使用 ...

  4. [css] 怎样用纯CSS实现禁止鼠标点击事件?

    [css] 怎样用纯CSS实现禁止鼠标点击事件? pointer-events: none; 是css3新出现的属性,意思就是禁止鼠标点击事件,当元素中有这一属性时,链接.点击事件统统失效. 个人简介 ...

  5. android加载富文本可点击链接,Android富文本解析器,支持网络图片,图片和链接点击事件...

    HtmlText image HtmlText 是 android.text.Html 的一个扩展,可以加载 HTML 并将其转换成 Spannable 显示在 TextView 上,支持网络图片,图 ...

  6. 2、多效果、太极图、党徽和五角星、时钟、animation、文本溢出显示省略号、Flex布局、Flex容器、链接状态、选择器、清除浮动、table表格合并、点击事件、半包围效

    2.多效果.太极图.党徽和五角星.时钟.animation.文本溢出显示省略号.Flex布局.Flex容器.链接状态.选择器.清除浮动.table表格合并.点击事件.半包围效.getBoundingC ...

  7. 官网下的 demoMUI,a链接失效和点击事件失效

    可以监听tap事件,然后执行document.location.href=this.href;跳转 // 监听tap事件,解决 a标签 不能跳转页面问题mui('body').on('tap','a' ...

  8. 微博的文本编辑和显示(emoji表情,@某人、链接高亮点击)

    日常开发的过程中我们经常会需要实现类似微博的文本输入框,可以自定义的emoji.@某人高亮显示.快捷删除.文本显示表情.@人和链接点解等效果.本人躺尸过各种坑后来一波,废话不说,先看效果: Demo ...

  9. WPF 给任意控件通过按下移动抬起封装点击事件

    其实点击这个事件是可以通过按下移动和抬起三个事件封装出来的,本文提供给大家一个辅助的方法,方便给任意的控件附加点击事件 在开始前需要了解一些本文点击的定义,本文点击的定义就是在按下到抬起过程中,不会出 ...

  10. android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)...

    1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为        2,为了使LISTVIEW的ITEM在点 ...

最新文章

  1. memcache的分布式缓存问题
  2. 高级驾驶辅助系统ADAS
  3. deepin 安装 kvm-manager
  4. Ubuntu基本命令
  5. java3d 上色_Unity 着色过程
  6. mysql 热块_MySQL分布式集群之MyCAT(三)rule的分析【转】
  7. sqlserver select 数值精度_SQL Server读懂语句运行 (二) SET STATISTICS IO ON
  8. 如何用Pygame写游戏(十三)
  9. html如何运用循环添加表格,萌新提问!!!如何用for循环循环表单?
  10. GB28181协议中的事件系统设计
  11. Use Namesapce 使用方法简介
  12. 解决点击锚点置顶内容被导航遮住
  13. idea解决代码冲突与乱码
  14. 解析UML的要点与应用
  15. EasyRecovery15可靠的数据恢复软件
  16. HDU 5857 Median(找中位数)
  17. snmp++ linux 编译出错_成为linux高手的第二步
  18. 首都师范 博弈论 2 2 4划线法
  19. 基于139邮箱的新邮件到达免费短信提醒的研究与应用
  20. OpenCV:直方图均衡

热门文章

  1. CryptoJS 加密
  2. python发送验证码通知短信(互亿无线)
  3. xampp mysql使用教程_在Windows下XAMPP的安装及使用教程
  4. 解决“安装程序无法创建新的系统分区,也无法定位现有系统分区”问题方法
  5. redis在php下面的命令大全
  6. ARINC429总线收发器 -- HI-3582调试记录
  7. matlab 矩阵模二运算符,MATLAB中怎样进行模二加的运算?
  8. 关于GitHub如何转为中文问题——Google举例
  9. 排课系统asp源代码_高校教务排课系统源代码及全套资料.doc
  10. DXF解析CAD图形解析PLT格式文件解析C#工程源码