如何在UITextView中创建可点击的URL/电子邮件/电话号码

8
我收到的服务器响应是一个字符串,其中可能包含一些网址、电子邮件地址或电话号码,也可能同时存在三种类型,或者只有一个电话号码和几个网址。没有固定的格式。
我正在使用UITextView在设备上显示此字符串。现在我想让这些网址/电子邮件/电话号码显示为超链接,并在单击这些链接时,如果是网址,则用户应该能够查看网页;如果是电子邮件地址,则应该能够草稿并发送电子邮件;如果是电话号码,则应该能够拨打电话。
请问是否有任何建议或其他数据视图可用于使事情更容易?

3
请确保您浏览并接受有帮助的答案。 - MarkPowell
从UITableView重新标记为UITextView。问题中没有提到UITableView。 - idz
4个回答

19

设置UITextView的数据检测类型。有几个选项:

UIDataDetectorTypePhoneNumber

UIDataDetectorTypeLink

UIDataDetectorTypeAddress

UIDataDetectorTypeCalendarEvent

UIDataDetectorTypeNone

UIDataDetectorTypeAll

因此,在您的情况下,您可能想执行以下操作:

self.myTextView.dataDetectorTypes = UIDataDetectorTypeAll;

你知道怎么让链接有下划线吗? - Mago Nicolas Palacios
您可以通过设置 UITextView.linkTextAttributes 属性(请参见 https://developer.apple.com/documentation/uikit/uitextview/1618632-linktextattributes)来设置 UITextView 中链接的样式。 - Nicolas Buquet

6

请注意,当您使用NSDataDetectorTypes时,文本视图不应该是可编辑的。

假设textView是一个UITextView对象,则设置:

textView.editable = NO;

只有这样它才能检测到链接、电话号码、地址等信息。

3
在界面生成器中添加一个UITextView,无需编写代码。在属性检查器中,取消“可编辑”选项并选中“可选择”选项。在数据探测器旁边勾选“电话号码”。对于其他数据类型也应该有效。务必编辑“提示颜色”,否则可能会出现没有标签的情况(但仍然可以点击启动)。(如果你用正确的方式看待这个世界,它是美丽的!)

"色调"颜色! :) - Alexander Gorbatenko

0
你可以使用UIButton,并将标题更改为URL、电子邮件或电话号码。
创建一个自定义的UIButton,使用相应的格式使其看起来像一个普通的句子(按钮的边缘和背景与视图的背景颜色相同)。
格式化文本,使其看起来像this一样蓝色(可选下划线),以便人们知道它是一个超链接。

如何使识别出的链接带有下划线?链接无法工作。 - Mago Nicolas Palacios

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接