前言

在项目中要在展示展示的文字中,自动匹配url 并且点击实现跳转,看了很多第三方的感觉都很复杂。后来自己写了一个简单的。
实现代码如下
1、创建一个继承UITextView的CjTextView 。
import <UIKit/UIKit.h>
@interface CjTextView : UITextView
@end
import "CjTextView.h"
@interface CjTextView ()
@property (nonatomic, copy ) NSString myText;
@property (nonatomic, assign) NSRange urlTange;
@property (nonatomic, copy ) NSString url;
@end
@implementation CjTextView
-(instancetype)initWithFrame:(CGRect)frame{
if (self = [super initWithFrame:frame]) {
}
return self;
}
// 重写了text的set 方法
-(void)setText:(NSString * )text{
self.myText = text;
[self.textStorage setAttributedString:[[NSAttributedString alloc]initWithString:text]];
NSRange range = NSMakeRange(0, self.myText.length);
[self.textStorage addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:range];
在这个方法中可以改变网址的颜色字体大小等属性。
[self doing];
}
-(void)layoutSubviews{
[super layoutSubviews];
self.textContainer.size = self.bounds.size;
}
-(void)touchesBegan:(NSSet<UITouch *> )touches withEvent:(UIEvent )event{
CGPoint point = [[touches anyObject] locationInView:self];
NSRange range =self.urlTange;
self.selectedRange = range;
NSArray array = [self selectionRectsForRange:self.selectedTextRange];
for (UITextSelectionRect obj in array) {
if (CGRectContainsPoint(obj.rect, point)) {
NSLog(@"你点击了网址%@",_url);
}
}
}
-(void) doing {
NSDataDetector * dataDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingAllTypes error:nil];
NSArray res= [dataDetector matchesInString:self.textStorage.string options:NSMatchingReportProgress range:NSMakeRange(0, self.textStorage.string.length)];
for (NSTextCheckingResultresult in res) {
self.urlTange = result.range;
NSString str = [self.textStorage.string substringWithRange:result.range];
self.url = str;
NSMutableAttributedString *att= [[NSMutableAttributedString alloc]initWithString:str];
[att addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0, str.length)];
[att addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(0, str.length)];
[self.textStorage replaceCharactersInRange:result.range withAttributedString:att];
}
}
@end
2、在控制器中实现
include "CjTextView.h"
@interface ViewController ()
@end
@implementation ViewController
(void)viewDidLoad {
[super viewDidLoad];
CjTextView *label = [[CjTextView alloc]init];
关掉弹出键盘
label.editable = NO; label.text = @"123发送的股份大概放到放到地方多福多寿http://baidu.comuiiyiroiqiotioq" ; label.backgroundColor = [UIColor yellowColor]; label.frame = CGRectMake(100, 100, 202, 200);; [self.view addSubview: label]; }
就是这么简单的代码就实现了
总结
以上就是这篇文章的全部内容了,希望本文的内容对各位Android开发者们能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# textview
# 超链接跳转
# 点击textview跳转界面
# textview跳转
# Android利用CountDownTimer实现点击获取验证码倒计时效果
# Android实现点击获取验证码倒计时效果
# Android账号注册实现点击获取验证码倒计时效果
# Android中TextView实现部分文字可点击跳转
# Android studio点击跳转WebView详解
# Android TextView中文本点击文字跳转 (代码简单)
# Android开发欢迎页点击跳过倒计时进入主页
# 写了
# 看了
# 在这个
# 要在
# 都很
# 弹出
# 跳转
# 这篇文章
# 谢谢大家
# 第三方
# 这么简单
# 创建一个
# 实现了
# 器中
# 多福
# 有疑问
# setText
# void
# textStorage
# alloc
相关文章:
用v-html解决Vue.js渲染中html标签不被解析的问题
股票网站制作软件,网上股票怎么开户?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何通过商城免费建站系统源码自定义网站主题?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何快速搭建响应式可视化网站?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
建站之星如何助力企业快速打造五合一网站?
免费网站制作appp,免费制作app哪个平台好?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
如何快速生成可下载的建站源码工具?
如何通过网站建站时间优化SEO与用户体验?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
建站主机空间推荐 高性价比配置与快速部署方案解析
北京企业网站设计制作公司,北京铁路集团官方网站?
如何在企业微信快速生成手机电脑官网?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
湖北网站制作公司有哪些,湖北清能集团官网?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
网站制作企业,网站的banner和导航栏是指什么?
网站代码制作软件有哪些,如何生成自己网站的代码?
平台云上自助建站如何快速打造专业网站?
广东企业建站网站优化与SEO营销核心策略指南
小型网站制作HTML,*游戏网站怎么搭建?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
网站制作的步骤包括,正确网址格式怎么写?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
,有什么在线背英语单词效率比较高的网站?
Java解压缩zip - 解压缩多个文件或文件夹实例
如何确认建站备案号应放置的具体位置?
建站之星与建站宝盒如何选择最佳方案?
如何在建站之星绑定自定义域名?
无锡营销型网站制作公司,无锡网选车牌流程?
微信小程序 input输入框控件详解及实例(多种示例)
广州美橙建站如何快速搭建多端合一网站?
c# await 一个已经完成的Task会发生什么
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
*请认真填写需求信息,我们会在24小时内与您取得联系。