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"}]; 

默认情况下,链接呈现为蓝色文本。 您可以使用UITextViewlinkTextAttributes属性更改样式。

如果在UITextView上将editable设置为NO ,链接将变为可点击。

我知道这是一个古老的问题,但…

尝试使用NSMutableAttributedString。 它有两个属性的方法:

 void addAttribute:(NSString *)value range:(NSRange) 

 void addAttributes:(NSDictionary *) range:(NSRange) 

使用UITextView,它将parsing您的文本,并将链接变成带下划线的蓝色超链接:

 textView.dataDetectorTypes = UIDataDetectorTypeLink; 

是的,它不存在,如果你减lesssearch到iOS库它不会给你NSLinkAttributeName任何结果。 它不在……官方,也许是私人的?

这篇不错的文章提到超链接,但没有显示一个例子。 我怀疑这是可能的公共API方法。