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開發者們能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對創新互聯的支持。

文章標題:Android中TextView自動識別url且實現點擊跳轉
URL網址:http://m.kartarina.com/article8/jecdop.html

成都網站建設公司_創新互聯,為您提供網站改版Google營銷型網站建設做網站定制開發網站營銷

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發
主站蜘蛛池模板: 国产精品亚洲专区无码不卡 | 亚洲av成人无码网站…| 中文字幕无码精品亚洲资源网| 久久久精品人妻无码专区不卡| 亚洲AV无码码潮喷在线观看| 无码人妻aⅴ一区二区三区有奶水| 永久免费av无码网站yy| 国产精品无码亚洲精品2021 | 惠民福利中文字幕人妻无码乱精品| 无码人妻精品一区二区三区夜夜嗨| 无码射肉在线播放视频| 国产精品无码A∨精品影院| 成人免费无码大片A毛片抽搐| 无码中文字幕日韩专区视频| 潮喷失禁大喷水aⅴ无码| 亚洲av永久无码精品国产精品 | 无码精品蜜桃一区二区三区WW| 亚洲AV无码乱码国产麻豆穿越| 日韩毛片无码永久免费看| 日韩精品少妇无码受不了| 久久久久久久人妻无码中文字幕爆| 日韩精品人妻系列无码av东京| 亚洲av中文无码乱人伦在线观看 | 毛片无码一区二区三区a片视频| 国产精品无码一区二区三级| 超清无码一区二区三区| 韩日美无码精品无码| 无码精品人妻一区| 亚洲AV无码之日韩精品| 免费无码A片一区二三区| 好爽毛片一区二区三区四无码三飞 | 亚洲Aⅴ无码一区二区二三区软件 亚洲?V无码乱码国产精品 | 国模无码一区二区三区| 色综合无码AV网站| 国产AV无码专区亚洲AV麻豆丫| 亚洲av午夜国产精品无码中文字| 69ZXX少妇内射无码| 亚洲乱亚洲乱妇无码| 免费A级毛片无码久久版| 无码人妻丰满熟妇区毛片18| 日韩经典精品无码一区|