我正在使用a/b/c.txt
并在其中显示三个标签(message,titleUrl和url)中的文本。我需要的是,我想让“titleUrl”文本可点击以在Web视图中打开“url”的值。我设法直接从网址打开链接,但我需要点击“titleUrl”打开链接。我试图从这段代码中实现以下目的。
a/b/c/d
但我不知道如何修改它以实现功能。我想在字符串中输入值,没有要输入的静态文本。任何人都可以指导我处理这件事吗?
更新
UITextView
答案 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 string和NSLinkAttributeName
。
答案 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 }