1. 程式人生 > >【iOS開發】如何給字串新增超連線(響應事件)

【iOS開發】如何給字串新增超連線(響應事件)

首先,我們在開發的過程中,會遇到這樣的問題。比如:點選某一部分的文字跳轉到另一介面。無論是登入協議,保險協議等等吧。

點選使用者協議——》跳轉協議介面

但是UITextView提供了新增超連線的方法,ios7.0之後使用。或許你可以使用UILabel屬性字串和UIButton來實現,當然是想的方法多種。我就不在介紹了^_^

我來介紹一下UITextView的使用方法:

/**
 *  @author wumeng, 16-06-29 17:06:25
 *
 *  @brief 建立textView
 */
-(void)createTextView
{
    //字串的處理
    NSString *str  
[email protected]
"@百度是大壞蛋@www.baidu.com"; NSString *matchStr = @"百度"; NSMutableAttributedString *MAttributedString = [[NSMutableAttributedString alloc]initWithString:str]; if ([str rangeOfString:matchStr].location!=NSNotFound) { /** * 注意這個url必須是*****://***的格式不然url取不到字串 */ [MAttributedString addAttribute:NSLinkAttributeName value:[NSURL URLWithString:@"username://"] range:[[MAttributedString string] rangeOfString:matchStr]]; } //UITextView的建立 UITextView *TV = [[UITextView alloc]initWithFrame:CGRectMake(0, 60, 300, 200)]; TV.backgroundColor = [UIColor grayColor]; //必須設為NO不然不能響應點選事件 TV.editable = NO; // 設定點選時的樣式 NSDictionary *linkAttributes
[email protected]
{NSForegroundColorAttributeName: [UIColor greenColor],NSUnderlineColorAttributeName: [UIColor lightGrayColor],NSUnderlineStyleAttributeName:@(NSUnderlinePatternSolid)}; // 新增連結文字 TV.linkTextAttributes = linkAttributes; /** 設定自動檢測型別為連結網址. */ TV.dataDetectorTypes = UIDataDetectorTypeLink; TV.delegate = self; TV.attributedText = MAttributedString; [self.view addSubview:TV]; } #pragma mark - textViewDelegate - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange { NSLog(@"%@",[URL scheme]); if ([[URL scheme] containsString:@"username"]) { NSLog(@"點中了。。。。。。。。"); } return YES;//跳轉到瀏覽器 }
不過你們可以把它封裝成一個類來使用,不過也有幾個需要注意的點

新增屬性連結的URL需要注意的地方,必須使用xxxx://xxxx的格式。

/**
         *  注意這個url必須是<span style="background-color: rgb(255, 102, 102);">*****://***</span>的格式不然url取不到字串
         */
        [MAttributedString addAttribute:NSLinkAttributeName value:[NSURL URLWithString:@"username://"] range:[[MAttributedString string] rangeOfString:matchStr]];

在代理方法回撥的時候,如果沒有“://”的話,在[URL scheme]方法裡取不到特定的值,一句話://前面的才是最重要的識別符號

相關推薦

iOS開發如何字串新增連線響應事件

首先,我們在開發的過程中,會遇到這樣的問題。比如:點選某一部分的文字跳轉到另一介面。無論是登入協議,保險協議等等吧。 點選使用者協議——》跳轉協議介面 但是UITextView提供了新增超連線的方法,ios7.0之後使用。或許你可以使用UILabel屬性字串和UIButt

iOS開發判斷app啟動的方式launchOptions

iOS app啟動的方式有哪些: 自己啟動(使用者手動點選啟動)urlscheme啟動(關於urlScheme的詳解點選開啟連結)本地通知啟動  (自己寫的本地通知啟動,藍芽模組的啟動,地理圍欄的啟動)遠端通知啟動    (後臺伺服器的推送通知)在appdelegate.m

敏捷開發經驗構件庫-Java版exp-libs

完整原文(含原始碼):http://exp-blog.com/2018/09/22/pid-2382/ (轉載請註明出處,僅供分享學習,嚴禁用於商業用途) 環境 簡介 此構件庫為本人多年程式設計總結提煉而成,把常用的功能模組作為原子API

遊戲開發directx遊戲專案——第一部分未完

目的: 編寫啟動渲染系統的程式碼,用於初始化Direct3D,將螢幕清屏為指定的顏色以及關閉系統。 main.h標頭檔案 //main.h #ifndef _UGP_MAIN_H_ #define _UGP_MAIN_H_ #include "StrandedE

Android開發wifi開關與wifi連線密碼連線

過放蕩不羈的生活,容易得像順水推舟,但是要結識良朋益友,卻難如登天。—— 巴爾扎克 本文demo來自網路,找了好久找到的,後面自己做了些許修改,這裡對原始碼解析,愧於忘記哪裡出來了,感謝作者! 接下來就記錄一下wifi開發的一些學習心得,這邊先看幾張效果圖吧!     

Hololens開發Holograms 101: Introduction with Device使用Hololens

本文我們將通過Unity建立一個包括:凝視(gaze)、手勢(gesture)、語音輸入(voice)、空間聲音(spatial sound)和空間對映(spatial mapping)的完整的 Hololens 專案,並直接在 Hololens 上執行。 譯

iOS開發iOS移動端架構

引言:一個app的初始階段,必然是先滿足各種業務需求。然後,經過多次版本迭代之後,先前的由於急於滿足需求而導致的雜亂程式碼則會充斥整個專案。而此時,專案有了一定的規模,有了一定數量的開發人員,那麼為了達到快速迭代版本的需求,則是需要有一個強大的架構來支撐。

iOS開發Gitlab教程 (一)

一 、gitLab 建立工程 Project name : 工程名字起一個,最好和專案相關; Namespace : 你自己的gitLab工作空間,預設就好; Description : 描述,隨便寫。 Visibi

iOS開發SEL和Selector 原理小結

一 、Selector(選擇器)簡介 選擇器是用來選擇一個方法來為一個物件 執行的名稱,或是在編譯原始碼時替換該名稱的 唯一識別符號的名稱。一個選擇器本身不做任何事情。它簡單地識別了一種方法。唯一使選擇器的方法名稱不同於普通字串,編譯器確保選擇器是獨特的。

iOS開發一些常見的警告解決方案(更新中。。。)

Unknown pattern color for the Background Color attribute 1.背景色屬性為未知模式的顏色 解決:預設xib裡面控制元件的背景色為Default。如果出現警告,可能是你定義的顏色Xcode啟動

iOS開發UIWebView載入html時不顯示網路圖片解決辦法

NSString *html = @"<html><body><p>怎麼顯示網路圖片 <img src=\"http://p0.ifengimg.com/pmop/2017/1218/F9636BB16CC72EC34B5FCB78

APP內開啟另一個APPURL Scheme與openURLiOS開發

目標 平常我們做iOS開發,會經常遇到開啟其他的APP的功能。本篇文章講的就是開啟別人的APP的一些知識。我們的目標是: 開啟別人的APP讓別人開啟我們的APPiOS9的適配問題使用URL Schemes傳遞資料 準備工作 建立一個名為OpenApp的工作空間,用來存放

iOS開發陣列的去重(無序和有序)

一、 無序的去重 1.利用NSDictionary的AllKeys(AllValues)方法 可以將NSArray中的元素存入一個字典,然後利用AllKeys或者AllValues取得字典的所有鍵或值,這些鍵或值都是去重的。 程式碼:

iOS開發---- tableView背景隨表滾動

        最近專案中用到了“圖隨表動”,如下圖所示:         這是一個訂單,需要add shipping insurance以上的部分隨著表格的滾動而滾動,這裡表格是group型別的,所以背景加在cell上是達不到效果的,在code4App上找到了一個例子(

iOS開發---- 語音識別

        最近iOS專案中需要用到語音識別技術(也被稱為自動語音識別,英語:Automatic Speech Recognition, ASR)。去google搜尋了一下,發現語音識別做的不錯的

IOS 開發Object

.一. 類定義類定義需要實現兩部分 : -- 介面部分 : 定義類的成員變數和方法, 方法是抽象的, 在標頭檔案中定義;-- 實現部分 : 引入介面部分的標頭檔案, 實現抽象方法;1. 介面部分定義 (

iOS開發UIView包括子類的幾個初始化方法

-(id)initWithFrame:(CGRect)frame UIView的指定初始化方法; 總是傳送給UIView去初始化, 除非是從一個nib檔案中載入的; -(id

iOS開發NSThread

 atomic    原子屬性,是預設屬性     * 是在多執行緒開發時,保證多個執行緒在"寫入"的時候,能夠保證只有一條執行緒執行寫入操作!     * 是一個單(執行緒)寫多(執行緒)讀的多執行緒技術     * 原子屬性,解決不了賣票問題,因為賣票的讀寫都需要鎖定

iOS開發launch Images啟動圖片設定(UILaunchImageFile)之002

一、實現效果: 通過直接給圖片起預設的名字,讓app啟動頁自動載入啟動圖片。 二、注意點: ·圖片命名一定要按蘋果官方的指定規則命名,圖片的畫素也要符合規則; ·如果橫豎屏圖片都需要,記得在Xcode中勾選上專案支援橫豎屏。 三、官方描述:

iOS 開發將自己的框架打包成 Framework 的方法

建立 Framework 工程1. 建立打包工程開啟 Xcode 新建一個工程,選擇 Framework & Libray 選項中的 Cocoa Touch Framework ,這裡說一下我的 Xcode 版本是 8.3.2 。建立工程因為要打包所需的檔案,所以這裡我自己建立了一個測試類,在實際的打