在UITextView中创建文本超链接或可单击

iPh*_*e 7 2 iphone uitextview ios

UITextView从三个标签(message,titleUrl和url)中显示并显示文本.我需要的是,我想让"titleUrl"文本可点击以在Web视图中打开"url"的值.我设法直接从网址打开链接,但我需要点击"titleUrl"打开链接.我试图从这段代码中实现以下功能.

[self buildAgreeTextViewFromString:NSLocalizedString(@"I agree to the #<ts>terms of service# and #<pp>privacy policy#", 
                                                 @"PLEASE NOTE: please translate \"terms of service\" and \"privacy policy\" as well, and leave the #<ts># and #<pp># around your translations just as in the English version of this message.")];
Run Code Online (Sandbox Code Playgroud)

但我不知道如何修改它来实现功能.我想在字符串中输入值,没有要输入的静态文本.任何人都可以指导我处理这件事吗?

更新:

NSString *message = [NSString stringWithFormat:@"%@\n ", tempStr1];
        NSString *message1 = [NSString stringWithFormat:@"\n#<pp>%@#", titlStr1];
        NSString *localizedString = NSLocalizedString(message1, nil);

        NSRange ppRange = [localizedString rangeOfString:NSLocalizedString(message1, nil) options:NSCaseInsensitiveSearch];


        NSURL *ppURL = [NSURL URLWithString:strUrl];



        NSDictionary *attribute1 = @{NSForegroundColorAttributeName: [UIColor whiteColor],
                                     NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue" size:15.0],
                                     };
        NSMutableAttributedString *newAttString = [[NSMutableAttributedString alloc] initWithString:message attributes:attribute1];

        //

        NSMutableAttributedString *finalMessage = [[NSMutableAttributedString alloc] initWithString:localizedString];
        [finalMessage beginEditing];

        [finalMessage addAttributes:attribute1 range:ppRange];
        [finalMessage addAttribute:NSLinkAttributeName value:ppURL range:ppRange];
        [finalMessage endEditing];

        [newAttString appendAttributedString:finalMessage];

        self.txtView.attributedText = newAttString;
Run Code Online (Sandbox Code Playgroud)

sou*_*ned 8

这就像使用一样简单NSMutableAttributedString.注意:这不是唯一的方法,这可以通过搜索范围等来完成,这只是一个简单的实现,可以让你找到正确的方向,因为你有静态消息,因为你本地化所有这些,这意味着你有静态的英文形式.

NSString *tosString = @"Terms of Service";
NSString *ppString = @"Privacy Policy";
NSString *message = [NSString stringWithFormat:@"I agree to the #<ts>%@# and #<pp>%@#", tosString, ppString];
NSString *localizedString = NSLocalizedString(message, nil);

NSRange tosRange = [localizedString rangeOfString:NSLocalizedString(tosString, nil) options:NSCaseInsensitiveSearch];
NSRange ppRange = [localizedString rangeOfString:NSLocalizedString(ppString, nil) options:NSCaseInsensitiveSearch];

NSURL *tosURL = [NSURL URLWithString:@"http://toslink.com"];
NSURL *ppURL = [NSURL URLWithString:@"http://pplink.com"];

NSMutableAttributedString *finalMessage = [[NSMutableAttributedString alloc] initWithString:localizedString];
[finalMessage beginEditing];
[finalMessage addAttribute:NSLinkAttributeName value:tosURL range:tosRange];
[finalMessage addAttribute:NSLinkAttributeName value:ppURL range:ppRange];
[finalMessage endEditing];

self.yourTextView.attributedText = finalMessage;
Run Code Online (Sandbox Code Playgroud)