巧用UITextView實(shí)現(xiàn)富文本的點(diǎn)擊效果

項(xiàng)目中要實(shí)現(xiàn)的效果

需求.png

1.現(xiàn)在較好的第三方 TYAttributedLabel可以很方便的實(shí)現(xiàn)各種富文本效果

但是項(xiàng)目中用到富文本效果的地方不是很多,所以自己就想找個(gè)更加簡(jiǎn)單的方法.具體方法如下
先設(shè)置NSLinkAttributeName屬性

//用UItextView 實(shí)現(xiàn)富文本的功能
    UITextView *detail = [[UITextView alloc] initWithFrame:CGRectMake(0, ViewMaxY(loginBtn)+10, SCREEN_WIDTH, 30)];
    detail.backgroundColor = RGB(249, 249, 249);
    detail.font = [UIFont systemFontOfSize:14];
    detail.textAlignment = NSTextAlignmentCenter;
    detail.delegate = self;
    detail.editable = NO;
    detail.scrollEnabled = NO;
    
    NSMutableAttributedString *myStr = [[NSMutableAttributedString alloc] initWithString:@"*登錄即表示你同意《體教聯(lián)盟用戶協(xié)議》"];
    
    NSMutableParagraphStyle *paragraphStyleFirst = [[NSMutableParagraphStyle alloc] init];
    paragraphStyleFirst.alignment = NSTextAlignmentCenter;
    
  //綁定標(biāo)簽跳轉(zhuǎn)
    [myStr addAttribute:NSLinkAttributeName
                  value:@"mytest://"
                  range:[[myStr string] rangeOfString:@"《體教聯(lián)盟用戶協(xié)議》"]];
    [myStr addAttribute:NSForegroundColorAttributeName
                  value:RGB(153, 153, 153)
                  range:[[myStr string] rangeOfString:@"*登錄即表示你同意"]];
    [myStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyleFirst range:NSMakeRange(0, myStr.length)];
    
    detail.linkTextAttributes = @{NSForegroundColorAttributeName: RGB(80, 140, 238),
                                  NSUnderlineColorAttributeName: [UIColor redColor],
                                  NSUnderlineStyleAttributeName: @(NSUnderlinePatternSolid)};
    
    detail.attributedText = myStr;

然后在textView代理方法,點(diǎn)擊link時(shí)攔截

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
    if ([[URL scheme] isEqualToString:@"mytest"]) {
        //跳轉(zhuǎn)界面或者其他事情
        
        return NO;
    }
    
    return YES;
}

最終實(shí)現(xiàn)效果

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

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

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