美文网首页iOS新手学习
iOS UITextView 文字链接点击事件

iOS UITextView 文字链接点击事件

作者: Yuency | 来源:发表于2018-08-31 16:07 被阅读14次

前言

总是会有“我已经阅读并同意了《各种协议》” 这样的东西,一般都是高亮字体,点击还能跳转。。 我从来没用过button去拼凑链接

代码地址 https://github.com/gityuency/ObjectiveCTools
【类名:TextViewViewController】

先上图:


效果图.png

再上代码
在 XIB 里面拖一个UITextView,只设置约束,其余的我在代码里设置的。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.vvv.delegate = self;
    self.vvv.editable = NO;
    self.vvv.scrollEnabled = NO;
    //self.vvv.selectable = NO; 这一句写了点击事件就失效
    
    NSString *aLink = @"《青米网络科技无限公司协议》";
    NSString *bLink = @"《青米网络科卖身协议》";
    NSString *link = [NSString stringWithFormat:@"我已经同意并且认真阅读了遵守%@%@",aLink,bLink];

    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:link];

    //设置链接文本
    [attributedString addAttribute:NSLinkAttributeName
                             value:@"http://www.baidu.com"
                             range:[[attributedString string] rangeOfString:aLink]];

    [attributedString addAttribute:NSLinkAttributeName
                             value:@"http://www.163.com"
                             range:[[attributedString string] rangeOfString:bLink]];

    [attributedString addAttribute:NSFontAttributeName
                             value:[UIFont systemFontOfSize:20]
                             range:[[attributedString string] rangeOfString:link]];

    //设置链接样式
    self.vvv.linkTextAttributes = @{
                                    NSForegroundColorAttributeName: [UIColor redColor],
                                    NSUnderlineColorAttributeName: [UIColor clearColor],
                                    NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)
                                    };
    
    self.vvv.attributedText = attributedString;

}

#pragma mark - 实现链接代理
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
    NSLog(@"可以判断一下链接, %@",URL);
    return YES;
}

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction {
    NSLog(@"iOS 10+ %@",URL);
    return YES;
}

相关文章

网友评论

    本文标题:iOS UITextView 文字链接点击事件

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