iOS 通过TextView富文本给文字添加点击事件

UITextView *protocolTV = [[UITextView alloc]initWithFrame:CGRectMake(50,200, 200, 100)];

//    protocolTV.frame = CGRectMake(15, 15, SCREEN_WIDTH - 30, 40);

    protocolTV.editable = NO;

    protocolTV.delegate = self;

    protocolTV.textContainer.lineFragmentPadding = 0.0;

    protocolTV.textContainerInset = UIEdgeInsetsMake(15, 0, 0,  0);

    protocolTV.linkTextAttributes = @{NSForegroundColorAttributeName:[UIColor blueColor]};

    [self.view addSubview:protocolTV];

    NSString *appName = [NSBundle mainBundle].infoDictionary[@"CFBundleDisplayName"];

    NSString *rangeStr = [NSString stringWithFormat:@"这是我们要遵循的《%@隐私政策》",appName];

    NSString *protocolStr = [NSString stringWithFormat:@"阅读并同意%@",rangeStr];

    NSString *serverce= [NSString stringWithFormat:@"《服务协议》"];

    NSRange privacyRange = [protocolStr rangeOfString:rangeStr];

    NSString *preStr = [NSString stringWithFormat:@"这是我们要遵循的"];

    NSMutableAttributedString *privacy = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@%@",preStr,protocolStr] attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:20],NSForegroundColorAttributeName:[UIColor blueColor]}];

    NSRange range = [rangeStr rangeOfString:preStr];

    [privacy setAttributes:@{NSForegroundColorAttributeName:[UIColor blackColor],NSFontAttributeName:[UIFont systemFontOfSize:20]} range:[rangeStr rangeOfString:preStr]];

    [privacy addAttribute:NSLinkAttributeName value:@"privacy://" range:privacyRange];

   

   

    NSMutableAttributedString *servercePrivacy = [[NSMutableAttributedString alloc]initWithString:serverce attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:20.0],NSForegroundColorAttributeName:[UIColor blueColor]}];

    NSRange serverceRange = [serverce rangeOfString:serverce];

    [servercePrivacy addAttribute:NSLinkAttributeName value:@"serverce://" range:serverceRange];

    [privacy appendAttributedString:servercePrivacy];

    protocolTV.attributedText = privacy;

    [self.view addSubview:protocolTV];

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

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

        NSLog(@"点击了隐私协议");

    }else if ([URL.scheme isEqualToString:@"serverce"]){

        NSLog(@"点击了服务协议");

    }

    return YES;

}

猜你喜欢

转载自blog.csdn.net/ForeverMyheart/article/details/117411351