iOS上的NSAttributedString和Links

kdb*_*las 9 cocoa-touch core-text ios

我正在尝试添加一个超链接到我正在使用CoreText处理和绘制的文本的某些部分.

根据Apple在CoreText上的文档,我应该addAttribute:NSLinkAttributeName在iOS(4.3)上使用它,它说它不知道NSLinkAttributeName.在我的文档搜索中,看起来只有NSLinkAttributeName仍然存在于Mac上.

它是否可在iOS上使用,我只是遗漏了一些东西?如果它不可用,我如何使用NSMutableAttributedString和CoreText在文本的一部分上创建超链接?

谢谢

jon*_*ahb 11

从iOS 7开始,UITextView支持属性字符串中的链接:

textView.attributedText = [[NSAttributedString alloc] initWithString:@"Stack Overflow" attributes:@{NSLinkAttributeName: @"http://stackoverflow.com"}];
Run Code Online (Sandbox Code Playgroud)

默认情况下,链接呈现为蓝色文本.您可以使用UITextView's linkTextAttributes属性更改样式.

如果设置editableNOon UITextView,则链接变为可点击.


小智 6

Jeremy发布JTextView了一个基于核心文本的UITextView模拟,支持归属文本,包括链接.

简而言之,JTextView:

  • 通过使用属性名称的自定义名称为链接创建自己的属性,属性值包含相应URL的表示形式
  • -drawRect:,它使用数据检测器进行链接.如果找到了链接,则会为相应的范围设置其自定义属性
  • 在其轻击手势识别器方法中,它获取包含抽头点的线框.对于该行中的每个字形运行,它获取其属性并检查它们是否包含链接的自定义属性.如果是,则打开URL.