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

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

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

所以采用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 富文本 文字点击事件/后跟图片处理)