UItextView 高亮關(guān)鍵字,點擊高亮字體響應(yīng)點擊事件

參考:

Swift - 給UITextView添加自定義鏈接,以及鏈接的點擊響應(yīng)

效果圖
import Foundation
import UIKit

extension UITextView {

    /// 添加鏈接文本(鏈接為空時則表示普通文本),且可加大指導(dǎo)字符串(默認font = 13)
    ///
    /// - Parameters:
    ///   - string: 文本
    ///   - increaseStr: 需加大的字符串
    ///   - withURLString: 鏈接
    ///   - lineSpacing: 行間距
    func appendLinkString(string:String,
                          increaseStr:String?,
                          withURLString:String?,
                          lineSpacing:CGFloat) {
        // 原來的文本內(nèi)容
        let attrString:NSMutableAttributedString = NSMutableAttributedString()
        attrString.append(self.attributedText)

        // 新增的文本內(nèi)容(使用默認設(shè)置的字體樣式)
        let attrs = [NSFontAttributeName : self.font!,
                     NSForegroundColorAttributeName : self.textColor ?? UIColor.black] as [String : Any]
        let appendString = NSMutableAttributedString(string: string, attributes:attrs)
        let range:NSRange = NSMakeRange(0, appendString.length)

        // 判斷是否是鏈接文字
        if let urlStr = withURLString {
            appendString.beginEditing()
            appendString.addAttribute(NSLinkAttributeName, value:urlStr, range:range)
            appendString.endEditing()
            appendString.addAttribute(NSUnderlineStyleAttributeName, value: NSNumber.init(integerLiteral: NSUnderlineStyle.styleSingle.rawValue), range: range)
        }

        // 字體加大
        if let increase: String = increaseStr {
            let tipRange: NSRange = NSString.init(string: string).range(of:increase)
            appendString.addAttribute(NSFontAttributeName, value: UIFont.systemFont(ofSize: 13), range: tipRange)
        }

        // 調(diào)整行間距
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineSpacing = lineSpacing
        appendString.addAttribute(NSParagraphStyleAttributeName,
                                  value: paragraphStyle,
                                  range: range)


        // 合并新的文本
        attrString.append(appendString)

        // 設(shè)置合并后的文本
        self.attributedText = attrString
    }
}
控制器中配置TextView調(diào)用appendLinkString函數(shù)
- (void)configTextView{
    self.textView.delegate = self;

    NSString *str0 = @"溫馨提示:\n\n1.用戶使用快捷充值不收取任何手續(xù)費。單筆充值限額根據(jù)各個銀行上的充值限額為準,";
    NSString *str1 = @"點擊查看銀行限額說明";
    NSString *str2 = @"。\n";
    NSString *str3 = @"2.因為銀行會在23:30到次日凌晨3:00進行系統(tǒng)數(shù)據(jù)處理,請盡量避免在此時間段充值。\n3.如果充值失敗,請撥打客服咨詢電話400-009-9595。";
    [self.textView appendLinkStringWithString:str0
                                  increaseStr:@"溫馨提示"
                                withURLString:nil
                                  lineSpacing:5];

    [self.textView appendLinkStringWithString:str1
                                  increaseStr:nil
                                withURLString:@"look:bankCardLimits"
                                  lineSpacing:5];

    [self.textView appendLinkStringWithString:str2
                                  increaseStr:nil
                                withURLString:nil
                                  lineSpacing:5];

    [self.textView appendLinkStringWithString:str3
                                  increaseStr:nil
                                withURLString:nil
                                  lineSpacing:5];
}
UITextViewDelegate獲取自定義鏈接Url,進行事件處理
#pragma mark - UITextViewDelegate
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange{
    // 查看銀行卡限額
    if ([URL.scheme isEqualToString:@"look"]) {

    }
    return YES;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,043評論 4 61
  • 轉(zhuǎn)載自:https://github.com/Tim9Liu9/TimLiu-iOS 目錄 UI下拉刷新模糊效果A...
    袁俊亮技術(shù)博客閱讀 12,142評論 9 105
  • 加了件衣服仍阻止不了身體的冷顫,我看看工作服上的三個扣子,每個相隔千萬里似的,于是我把領(lǐng)子豎了起來。 站久了腰會疼...
    颯颯秋風(fēng)爽why閱讀 186評論 3 1
  • 現(xiàn)在的我在健身房等著上第二堂課,趁著間隙寫下了今天的簡書,畢竟不寫是要罰錢的,哈哈 昨天寫了angel老師的時間管...
    小流于江海閱讀 202評論 0 0
  • 父親的話很少。 偶爾一兩句話 云淡風(fēng)輕, 或者蒼勁有力, 一點也不會提到自己, 父親給我們的感覺有時很遙遠。 那只...
    跳舞草閱讀 292評論 0 3

友情鏈接更多精彩內(nèi)容