全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android中TextView自动识别url且实现点击跳转

前言

在项目中要在展示展示的文字中,自动匹配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小时内与您取得联系。