我有一个回复来自api的文本形式,我想扫描该文本的单词" Planned Parenthood health center"并在该单词上插入一个超链接,重定向到plannedparenthood.org/health-center portal。
我的方法:
NSString *text = response.content;
text = [text stringByReplacingOccurrencesOfString:@"Planned Parenthood health center"
withString:@"<a href=\"http://www.plannedparenthood.org/health-center\">Planned Parenthood health center</a>"];
虽然文本上的链接正在被替换。它正在被
取代<a href=\"http://www.plannedparenthood.org/health-center\">Planned Parenthood health center </a>
有什么不对,为什么我没有在那里得到任何链接?我做错了什么我还将用户启用的交互设置为YES
答案 0 :(得分:5)
iOS不能很好地处理这个问题可能是因为它打算使用UIButtons,这些UIButtons更易于用户点击。
要完成您想要的任务,您不能使用UILabel - 您需要使用UITextView并设置其attributedText
属性:
NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:@"Planned Parenthood health center"];
[attributedString addAttribute: NSLinkAttributeName value: @"http://www.plannedparenthood.com" range: NSMakeRange(0, str.length)];
textView.attributedText = attributedString;
请注意,UITextView必须是可选择的,但不可编辑。
如果您的属性字符串中没有其他文本未链接,则此方法有一点缺点。例如,如果您有&#34;请选择此处以转到Planned Parenthood的网站&#34;在哪里&#34;在这里&#34;是您想要链接的文本的唯一部分。在这种情况下,如果您点击单词&#34; here&#34;旁边的文字中的任何其他位置,您会注意到用户可以选择它并具有蓝色突出显示。
如果不需要使用UITextView,则需要使用自定义内容,例如TTTAttributedLabel