NSAttributedString和iOS上的链接
我想添加一个超链接到我的文本正在处理和使用CoreText绘制的某些部分。
根据苹果的CoreText文档,我应该使用addAttribute:NSLinkAttributeName
但是在iOS(4.3)上它说它不知道NSLinkAttributeName。 在我的文档search它看起来像NSLinkAttributeName只存在于Mac上。
它在iOS上可用,我只是想念一些东西? 如果它不可用,我怎样才能创build一个使用NSMutableAttributedString和CoreText文本的一部分的超链接?
谢谢
Jeremy已经发布了JTextView
,这是一个基于核心文本的UITextView
JTextView
,支持JTextView
文本,包括链接。
简而言之,JTextView:
- 使用属性名称的自定义名称为链接创build属性,属性值包含相应URL的表示forms
- 在
-drawRect:
,它使用数据检测器进行链接。 如果find了链接,则会为相应的范围设置其自定义属性 - 在它的轻击手势识别器方法中,它获取包含轻击点的线框。 对于在该行中运行的每个字形,它将获取其属性并检查它们是否包含链接的自定义属性。 如果是这样,它将打开URL。
从iOS 7开始, UITextView
支持属性string中的链接:
textView.attributedText = [[NSAttributedString alloc] initWithString:@"Stack Overflow" attributes:@{NSLinkAttributeName: @"http://stackoverflow.com"}];
默认情况下,链接呈现为蓝色文本。 您可以使用UITextView
的linkTextAttributes
属性更改样式。
如果在UITextView
上将editable
设置为NO
,链接将变为可点击。
我知道这是一个古老的问题,但…
尝试使用NSMutableAttributedString。 它有两个属性的方法:
void addAttribute:(NSString *)value range:(NSRange)
和
void addAttributes:(NSDictionary *) range:(NSRange)
使用UITextView,它将parsing您的文本,并将链接变成带下划线的蓝色超链接:
textView.dataDetectorTypes = UIDataDetectorTypeLink;
是的,它不存在,如果你减lesssearch到iOS库它不会给你NSLinkAttributeName
任何结果。 它不在……官方,也许是私人的?
这篇不错的文章提到超链接,但没有显示一个例子。 我怀疑这是可能的公共API方法。