美文网首页
IOS 富文本 文字点击事件/后跟图片处理

IOS 富文本 文字点击事件/后跟图片处理

作者: 高谈阔论 | 来源:发表于2017-07-03 13:16 被阅读759次

    根据产品需求,需要一段提示性的文字,文字中某几个文字增加超链接,如果是HTML自然很容易。但是用在Xcode中实现,一开始想的是使用UILabel,虽然能改变文字颜色,但是没有点击事件,即便添加手势,仍是整行的点击事件,对特殊几个文字不起作用。

    所以采用UITextView方法实现效果。

    代码部分:

    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"您还没有中奖信息,赶快去参加活动"];

    [attributedString addAttribute:NSLinkAttributeName

    value:@"click://"

    range:[[attributedString string] rangeOfString:@"参加活动"]];

    _noDataView = [[UITextView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(_noDataImgView.frame) + 30, SCREEN_WIDTH, 30)];

    _noDataView.attributedText = attributedString;

    _noDataView.linkTextAttributes = @{NSForegroundColorAttributeName: RGBColor(91, 165, 239),

    NSUnderlineColorAttributeName: [UIColor lightGrayColor],

    NSUnderlineStyleAttributeName: @(NSUnderlinePatternSolid)};

    _noDataView.font = [UIFont systemFontOfSize:14];

    _noDataView.textAlignment = NSTextAlignmentCenter;

    _noDataView.textColor = RGBColor(147, 147, 147);

    _noDataView.backgroundColor = clear_color;

    _noDataView.delegate = self;

    _noDataView.editable = NO;        //必须禁止输入,否则点击将弹出输入键盘

    _noDataView.scrollEnabled = NO;

    [self.view addSubview:self.noDataView];

    说明:_noDataView自然是全局变量了。

    执行点击事件

    - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {

    if ([[URL scheme] isEqualToString:@"click"]) {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"popToHome" object:nil];//跳转到个人中心

    [self backHome];

    return NO;

    }

    return YES;

    }

    因为是textView中文字点击,所以适合轻轻点击,长按,快速点击均没有任何作用,甚至还能选中文字。这一点比较纠结。目前暂时没有想到其他合适的方法,如果大家有更好的可以贴出来共同学习。

    文字后面跟图片:


    先直接上代码:

    NSTextAttachment *attachment = [[NSTextAttachment alloc] init];

    attachment.image = [UIImage imageNamed:@"icon_addr1@2x"];

    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"请输入详细地址(可填写街道,小区,大厦)"];

    [attributedString addAttribute:NSForegroundColorAttributeName value:RGBColor(163, 163, 163) range:NSMakeRange(0, 20)];

    [attributedString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, 20)];

    NSAttributedString *attachmentString = [NSAttributedString attributedStringWithAttachment:attachment];

    [attributedString insertAttributedString:attachmentString atIndex:20];

    label.attributedText = attributedString;

    这样可以根据文字多少,高度等自动在后面添加图片了。range需要计算一下。


    相关文章

      网友评论

          本文标题:IOS 富文本 文字点击事件/后跟图片处理

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