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

时间:2015-09-02 14:13:45

标签: ios iphone uitextview

我正在使用a/b/c.txt并在其中显示三个标签(message,titleUrl和url)中的文本。我需要的是,我想让“titleUrl”文本可点击以在Web视图中打开“url”的值。我设法直接从网址打开链接,但我需要点击“titleUrl”打开链接。我试图从这段代码中实现以下目的。

a/b/c/d

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

更新

UITextView

3 个答案:

答案 0 :(得分:7)

这就像使用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;

答案 1 :(得分:3)

使用attributed stringNSLinkAttributeName

答案 2 :(得分:2)

Swift 3.0

你视图中的

确实加载了......

让tosString =&#34;服务条款&#34;         让ppString =&#34;隐私政策&#34;         让message =&#34;通过登录,你同意我们的(tosString)并且你已经阅读了我们的(ppString)&#34;

    let localizedString = NSMutableAttributedString(string: message)

    let tosRange = localizedString.mutableString.range(of: tosString)
    let ppRange = localizedString.mutableString.range(of: ppString)

    let tosURL = URL(string: "http://toslink.com")!
    let ppURL = URL(string: "http://pplink.com")!

    localizedString.addAttribute(NSLinkAttributeName, value: tosURL, range: tosRange)
    localizedString.addAttribute(NSLinkAttributeName, value: ppURL, range: ppRange)

    demoTextView.delegate = self
    demoTextView.isSelectable = true
    demoTextView.isUserInteractionEnabled = true
    localizedString.endEditing()
    self.demoTextView.attributedText = localizedString

并使用textview委托方法 func textView(_ textView:UITextView,shouldInteractWith URL:URL,in characterRange:NSRange) - &gt;布尔{         //处理你的控件         返回true     }