前言
在项目中要在展示展示的文字中,自动匹配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开发者们能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。
本文向大家介绍Android实现可点击展开的TextView,包括了Android实现可点击展开的TextView的使用技巧和注意事项,需要的朋友参考一下 概述 Android开发过程中,经常遇到 Textview 展示不完全的情况。 遇到此情况,通常的处理是: 方案一 Textview 添加 android:ellipsize 属性,让展示不完的部分使用省略号代替。 方案二 Textview 采
本文向大家介绍python3实现跳一跳点击跳跃,包括了python3实现跳一跳点击跳跃的使用技巧和注意事项,需要的朋友参考一下 借鉴了网上一些大神的代码和思路,这里整理一下写出点击跳跃玩跳一跳这个小游戏的思路 一、整体思路 棋子所在的坐标以及下一步所要到的坐标,根据两个坐标计算出两点之间距离进行跳跃。 二、分布思路 1、根据命令截图获取初始图保存到手机,然后上传到本地文件夹 2、将获取的截图放入新
本文向大家介绍Android中实现为TextView添加多个可点击的文本,包括了Android中实现为TextView添加多个可点击的文本的使用技巧和注意事项,需要的朋友参考一下 本文实例展示了Android中实现为TextView添加多个可点击的文本的方法。该功能在Android社交软件的制作中非常具有实用价值。分享给大家供大家参考。具体如下: 很多时候我们在使用社交软件的过程中多多少少会为别人
本文向大家介绍Android实现手势滑动识别功能,包括了Android实现手势滑动识别功能的使用技巧和注意事项,需要的朋友参考一下 对于Android中的手势识别可以从以下三个Listener入手——OnTouchListener、OnGestureListener、OnDoubleTapListener。这三个监听器分别是触摸监听、手势滑动监听和屏幕双击操作监听。很多的时候我们需要这些手势识别的
本文向大家介绍JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转,包括了JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转的使用技巧和注意事项,需要的朋友参考一下 程序要求: 编写一个html文件的网页代码,页面包含一个下拉列表框、一个文本框和一个按钮,下拉列表框选择要去的网站,当选择完毕后文本框中出现对应的网址。点击确认跳转按钮后访问文本框中出现的网址。 实现效果:
本文向大家介绍android实现App活动定时自动跳转效果,包括了android实现App活动定时自动跳转效果的使用技巧和注意事项,需要的朋友参考一下 App的小功能点,很简单几十行代码就可以实现 主页面代码 基本思路就是,通过一个计时线程来控制主线程(即UI线程)来更新UI 通过Handler来接受来自计时线程的Message 2.计时线程(内部类),设置每隔1秒睡一次,共3秒 3.最后别忘了在