富文本实现字符串点击效果

有时候我们会看到有这样的功能,某一个字符串中有个部分是可以点击的,而且要实现点击方法,其他部分又是不可点击。我们用NSMutableAttributedString和UITextView的配合来实现这个功能。实现的效果如下图:

show-1.png

其中红色字体是可点击的,而且需要区分点击事件实现各自的点击方法,中间黑色字体是不能点击的,下面是实现思路。

初始化NSMutableAttributedString

// 1、NSMutableAttributedString
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"《拼车搭乘协议》不可点击的文字组成部分《司机公约》"];
//设置富文本的效果,将可点击的部分设置成链接
[attributedString addAttribute:NSLinkAttributeName
                         value:kLinkValue_car  //第一个可点击的部分
                         range:[[attributedString string] rangeOfString:@"《拼车搭乘协议》"]];
[attributedString addAttribute:NSLinkAttributeName
                         value:kLinkValue_driver//第二个可点击的部分
                         range:[[attributedString string] rangeOfString:@"《司机公约》"]];
NSDictionary *linkAttributes                = @{NSForegroundColorAttributeName: [UIColor redColor]};

创建一个UITextView

// 2、UITextView
UITextView *textView        = [[UITextView alloc] initWithFrame:CGRectMake(0, 200, self.view.frame.size.width, 100)];
textView.linkTextAttributes = linkAttributes;
textView.attributedText     = attributedString;
textView.font               = [UIFont systemFontOfSize:15.0];
textView.textAlignment      = NSTextAlignmentCenter;
textView.editable           = NO;
textView.delegate           = self;
[self.view addSubview:textView];

其中使用了两个宏

#define kLinkValue_car    @"action1://"
#define kLinkValue_driver @"action1://"

实现textView的代理

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
    //通过URL的absoluteString属性区分点击事件,并在此实现点击事件即可
    if ([URL.absoluteString isEqualToString:kLinkValue_car])
    {   //实现“拼成达成协议”的点击方法
        NSLog(@"拼车搭乘协议");
        return NO;
    }
    if ([URL.absoluteString isEqualToString:kLinkValue_driver])
    {  //实现“司机公约”的点击方法
        NSLog(@"司机公约");
        return NO;
    }
    return YES;
}

但是要注意的是,iOS低版本的系统,设置点击字体颜色是无效的,默认是蓝色的,高一点的版本就可以自己设置颜色了。

demo地址:

https://github.com/Mexiang/NSStringTouch

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Text Kit学习(入门和进阶): http://www.cocoachina.com/industry/201...
    F麦子阅读 4,452评论 1 13
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,875评论 4 61
  • 我。一个以前很少发朋友圈的仙女竟然现在基本每天都在发朋友圈,是人性的扭曲还是道德的沦丧?(明明是是不想干活还牢骚满...
    cclynn阅读 665评论 1 0
  • 之前帮学校宣传写的两篇稿子,百度了一下,自己凑凑字数,凑够三百就发过去了。 没有见报,也没有被采用。 今天刘主任笑...
    一口方井阅读 174评论 0 0

友情链接更多精彩内容