UITextView:链接检测在模拟器中工作,而不是在设备上

Posted

技术标签:

【中文标题】UITextView:链接检测在模拟器中工作,而不是在设备上【英文标题】:UITextView: Link detection working within Simulator, not on device 【发布时间】:2013-10-13 11:21:16 【问题描述】:

我有两个 UITextViews,其中包含应该由数据检测识别的数据,但是虽然一个在设备和模拟器上都可以正常工作,但有一个只能在模拟器下工作。我试图从我的设备中删除构建,清理产品,删除派生数据,但似乎没有任何东西可以解决不一致问题。

在 Interface Builder 中启用了链接检测,数据使用 NSString stringWithFormat: 格式化字符串传入并使用 UITextView setText: 设置。为两者设置相同的方式,因此没有区别,但对于其中一个似乎无法正常工作。

编辑:在设备上,如果我点击应该检测为链接的项目之一,它会变成蓝色并进行链接检测。我没有设置任何可能产生影响的自定义字体或颜色。

【问题讨论】:

刚刚检查,您是否发现问题是 ios7 特有的? 我不记得在iOS6下看到过这个应用程序。 【参考方案1】:

看来诀窍是 setScrollable:NO。似乎解决了这个问题,虽然如果你需要滚动,我不确定答案会是什么......

【讨论】:

为我工作,但仍然有一个非常特殊的情况导致问题:当一个框以链接开头并且文本设置为空文本(@“” - 不是零!)盒子不知何故“坏了”,从那时起,盒子里的任何新文本都变成了一个链接。我的解决方案是覆盖 setText 以首先将 [super text] 设置为 @"x",然后再设置为实际的新文本。 哇!尴尬但很棒的解决方案!【参考方案2】:

显然这个问题是由 iOS 当前处理 UITextView 链接的方式引起的。它正在创建一个 NSAttributedString 将文本部分变为蓝色(当视图包含链接时)。所以我发现这个错误只发生在链接是 AttributedString 中的第一个文本时,即文本视图中的第一个文本。因此,可以通过在设置文本之前在文本前面添加空格来轻松修复它。或者覆盖 setText 为 " " + text;

希望对大家有所帮助

【讨论】:

your answer 的完全相同的副本。请停止发布重复的答案,而是发布一个并在此处提供链接以供参考。 这似乎是正确的观察,但建议的解决方案不太有用。您是否向 Apple 提交了错误报告? 我没有,我当时没有想过。

以上是关于UITextView:链接检测在模拟器中工作,而不是在设备上的主要内容,如果未能解决你的问题,请参考以下文章

音频和振动在模拟器中工作而不是在 ios 设备上

Typescript $inject $timeout into a directive ...在控制器中工作,而不是在链接中

与 IBAction 链接的 UIButton 不能在物理设备上的模拟中工作,也不能在 Xcode 9.2 中的模拟器中工作

无法让 ng-controller 在离子应用程序中工作

为啥 PyAudio 在一个模块中工作而不是在另一个模块中工作?

如何解决 Http 401 错误,但在邮递员中工作,而不是在 xamarin 表单中工作