美文网首页
iOS 设置字符串中部分字符(串)链接点击效果

iOS 设置字符串中部分字符(串)链接点击效果

作者: JasonEVA | 来源:发表于2018-02-24 11:12 被阅读394次

    效果如下图


    image.png

    点击10086部分可以响应点击事件

    实现方式是用的TTTAttributedLabel

    TTTAttributedLabel 是一个常用的富文本开源库,支持各种属性文本、数据探测器,链接等。

    设置TTTAttributedLabel

            NSString *linkText = @"10086";
            NSString *promptText = [NSString stringWithFormat:@"如有疑问,请联系客服%@", linkText];
            NSRange linkRange = [promptText rangeOfString:linkText];
            TTTAttributedLabel *textLabel = [[TTTAttributedLabel alloc] initWithFrame: CGRectZero];
            textLabel.font = [UIFont yd_font11];
            textLabel.textColor = [UIColor yd_grey_adadad];
            textLabel.numberOfLines = 0;
            textLabel.delegate = self;
            textLabel.lineBreakMode = NSLineBreakByCharWrapping;
            textLabel.text = promptText;
            NSDictionary *attributesDic = @{(NSString *)kCTForegroundColorAttributeName : (__bridge id)[UIColor yd_blue_FF2196F3].CGColor,
                                            (NSString *)kCTUnderlineStyleAttributeName : @(YES)
                                            };
            textLabel.linkAttributes = attributesDic;
            textLabel.activeLinkAttributes = attributesDic;
            [textLabel addLinkToURL:[NSURL URLWithString:@"testURL"] withRange:linkRange];
    
    

    响应点击事件

    - (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
        if ([url.absoluteString isEqualToString:@"testURL"]) {
    //响应点击事件
        }
    }
    

    其他方式

    image.png

    使用 YYText

    -(YYLabel *)protocolLabel{
        if (!_protocolLabel) {
            NSString *originText = @"已阅读并同意《用户使用协议》和《个人信息授权协议》";
            NSMutableAttributedString  *text1 = [[NSMutableAttributedString alloc] initWithString:originText];
            text1.yy_font = [UIFont systemFontOfSize:12];
            text1.yy_alignment = NSTextAlignmentLeft;
            text1.yy_color = RGBCOLOR(153, 153, 153);
            [text1 yy_setColor:kMainColor range:[originText rangeOfString:@"《用户使用协议》"]];
            
            [text1 yy_setTextHighlightRange:[originText rangeOfString:@"《用户使用协议》"]//设置点击的位置
                                      color:kMainColor
                            backgroundColor:[UIColor groupTableViewBackgroundColor]
                                  tapAction:^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect)
             {
                 NSLog(@"这里是点击事件");
                 JTBOpenWebUrlViewController *vc = [[JTBOpenWebUrlViewController alloc] init];
                 vc.url = JTB_H5_USER_REGISTER;
                 [self.navigationController pushViewController:vc animated:YES];
             }];
            [text1 yy_setColor:kMainColor range:[originText rangeOfString:@"《个人信息授权协议》"]];
            
            [text1 yy_setTextHighlightRange:[originText rangeOfString:@"《个人信息授权协议》"]//设置点击的位置
                                      color:kMainColor
                            backgroundColor:[UIColor groupTableViewBackgroundColor]
                                  tapAction:^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect)
             {
                 NSLog(@"这里是点击事件");
                 JTBOpenWebUrlViewController *vc = [[JTBOpenWebUrlViewController alloc] init];
                 vc.url = JTB_H5_USER_GET_INFO_AGREE;
                 [self.navigationController pushViewController:vc animated:YES];
             }];
            YYLabel *titleLb                         = [[YYLabel alloc] init];
            titleLb.userInteractionEnabled  = YES;
            titleLb.numberOfLines           = 2;
            titleLb.attributedText = text1;
            titleLb.textVerticalAlignment   = YYTextVerticalAlignmentCenter;
            titleLb.backgroundColor = [UIColor clearColor];
            _protocolLabel = titleLb;
        }
        return _protocolLabel;
    }
    

    相关文章

      网友评论

          本文标题:iOS 设置字符串中部分字符(串)链接点击效果

          本文链接:https://www.haomeiwen.com/subject/pyhqxftx.html