即使文本更改为没有任何链接的文本,UITextView 超链接 formatting/function 仍然存在

UITextView hyperlink formatting/function remains even after text changed to text without any links

我使用的 UITextView 会根据用户操作的过程显示不同的文本。有些文本包含 hyperlinks 而有些不包含,所以我想保留 UITextView 的默认设置来检测 links。但是,一旦我切换回没有 hyperlink 的文本,整个文本字段将转换为 hyperlink,其中某些 link 来自之前的文本。它完全是蓝色的,如果用户单击它,应用程序将打开 Safari 以转到不再存在的 link。在用真正的替换文本替换之前,我尝试将文本设置为 nil,但这没有用:

infoLabel.text = nil;

这个也没有

infoLabel.text = @"";

我还尝试在更改文本时在 UILabel 上显式设置 dataDetector 类型 属性,但是即使我已将其设置为另一种颜色,文本颜色仍为黑色。因此,如果我这样做,每次重置数据检测器类型时都必须重置文本颜色 属性。相当令人沮丧。这感觉就像一个错误。我错过了什么?

你在 UITableViewdequeueReusableCellWithIdentifier: 中使用 UITextView 吗?然后你可能会得到一个 "old" UITextView,你需要设置 "back to default"。设置 infoLabel.textColorinfoLabel.font 对我有用:

 [infoLabel setFont:[UIFont preferredFontForTextStyle:UIFontTextStyleBody]];
 [infoLabel.textColor = [UIColor whiteColor];

根据之前的回答 UITextViews in a UITableView link detection bug in iOS 7,这似乎是 ios 7 中的一个错误。那里的解决方案对我不起作用,但对我有用的是创建一个每组文本的新 UITextView,因为第一组文本总是没问题。如果有人知道为什么会发生这种情况(除了 bug),我很想知道,因为如果没有这个 bug,我仍然无法更新或重置 UITextView