欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中TextView自動識別url且實現(xiàn)點擊跳轉(zhuǎn)

 更新時間:2017年03月23日 08:23:51   作者:cj小牛  
這篇文章主要介紹了關(guān)于Android中TextView自動識別url且實現(xiàn)點擊跳轉(zhuǎn)的相關(guān)資料,文中給出了詳細(xì)的示例代碼,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。

前言

在項目中要在展示展示的文字中,自動匹配url 并且點擊實現(xiàn)跳轉(zhuǎn),看了很多第三方的感覺都很復(fù)雜。后來自己寫了一個簡單的。

實現(xiàn)代碼如下

1、創(chuàng)建一個繼承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];
在這個方法中可以改變網(wǎng)址的顏色字體大小等屬性。
[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(@"你點擊了網(wǎng)址%@",_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、在控制器中實現(xiàn)

include "CjTextView.h"

@interface ViewController ()
@end
@implementation ViewController

(void)viewDidLoad {
[super viewDidLoad];
CjTextView *label = [[CjTextView alloc]init];

關(guān)掉彈出鍵盤

label.editable = NO;
label.text = @"123發(fā)送的股份大概放到放到地方多福多壽http://baidu.comuiiyiroiqiotioq" ;
label.backgroundColor = [UIColor yellowColor];
label.frame = CGRectMake(100, 100, 202, 200);;
[self.view addSubview: label];
}

就是這么簡單的代碼就實現(xiàn)了

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對各位Android開發(fā)者們能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Android自定義表格控件滿足人們對視覺的需求

    Android自定義表格控件滿足人們對視覺的需求

    隨著人們對視覺的需求,基本組件已無法滿足人們求新求異的要求,于是我們常常會自定義組件,用來實現(xiàn)更美觀的UI界面,接下來將介紹Android如何自定義表格控件,感興趣的朋友可以了解下,或許對你學(xué)習(xí)自定義控件有所幫助
    2013-02-02
  • Android自定義view仿淘寶快遞物流信息時間軸

    Android自定義view仿淘寶快遞物流信息時間軸

    這篇文章主要為大家詳細(xì)介紹了Android自定義view仿淘寶快遞物流信息時間軸,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android編程實現(xiàn)監(jiān)控各個程序流量的方法

    Android編程實現(xiàn)監(jiān)控各個程序流量的方法

    這篇文章主要介紹了Android編程實現(xiàn)監(jiān)控各個程序流量的方法,涉及Android針對應(yīng)用包的遍歷,權(quán)限控制及相關(guān)屬性操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-12-12
  • Android 判斷某個服務(wù)(service)是否運行

    Android 判斷某個服務(wù)(service)是否運行

    這篇文章主要介紹了 Android 判斷某個服務(wù)(service)是否運行的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android 模擬器(JAVA)與C++ socket 通訊 分享

    Android 模擬器(JAVA)與C++ socket 通訊 分享

    Android 模擬器(JAVA)與C++ socket 通訊 分享,需要的朋友可以參考一下
    2013-05-05
  • Android中GPS定位的用法實例

    Android中GPS定位的用法實例

    這篇文章主要介紹了Android中GPS定位的用法實例,是Android程序設(shè)計中比較經(jīng)典的應(yīng)用,需要的朋友可以參考下
    2014-09-09
  • 詳解Activity之singletast啟動模式及如何使用intent傳值

    詳解Activity之singletast啟動模式及如何使用intent傳值

    在一個新棧中創(chuàng)建該Activity實例,并讓多個應(yīng)用共享改棧中的該Activity實例。一旦改模式的Activity的實例存在于某個棧中,任何應(yīng)用再激活改Activity時都會重用該棧中的實例,其效果相當(dāng)于多個應(yīng)用程序共享一個應(yīng)用,不管誰激活該Activity都會進(jìn)入同一個應(yīng)用中
    2015-11-11
  • Android 簡單封裝獲取驗證碼倒計時功能

    Android 簡單封裝獲取驗證碼倒計時功能

    倒計時效果相信大家都不陌生,我們可以使用很多種方法去實現(xiàn)此效果,這里自己采用 CountDownTimer 定時器簡單封裝下此效果,方便我們隨時調(diào)用。下面小編給大家分享android驗證碼倒計時封裝方法,感興趣的朋友一起看看吧
    2018-01-01
  • Android 三級NestedScroll嵌套滾動實踐

    Android 三級NestedScroll嵌套滾動實踐

    這篇文章主要介紹了Android 三級NestedScroll嵌套滾動實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Android開發(fā)EditText實現(xiàn)密碼顯示隱藏

    Android開發(fā)EditText實現(xiàn)密碼顯示隱藏

    這篇文章主要為大家詳細(xì)介紹了Android開發(fā)EditText實現(xiàn)密碼顯示隱藏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論