iOS 上的 NSAttributedString 和链接

发布于 2024-11-03 06:58:51 字数 305 浏览 1 评论 0原文

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

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

它可以在 iOS 上使用吗?我只是缺少一些东西? 如果不可用,如何使用 NSMutableAttributedString 和 CoreText 在部分文本上创建超链接?

谢谢

I am trying to add a hyperlink to certain parts of my text which is being handled and drawn using CoreText.

According to Apple's docs on CoreText I should be using addAttribute:NSLinkAttributeName however on iOS (4.3) it says it doesn't know NSLinkAttributeName.
In my document searches it looks like NSLinkAttributeName only still exists on the Mac.

Is it available on iOS and I am just missing something?
If it's not available how can I create a hyperlink on part of a text using NSMutableAttributedString and CoreText?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

攒眉千度 2024-11-10 06:58:51

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

textView.attributedText = [[NSAttributedString alloc] initWithString:@"Stack Overflow" attributes:@{NSLinkAttributeName: @"http://stackoverflow.com"}];

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

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

As of iOS 7, UITextView supports links in attributed strings:

textView.attributedText = [[NSAttributedString alloc] initWithString:@"Stack Overflow" attributes:@{NSLinkAttributeName: @"http://stackoverflow.com"}];

By default, links are rendered as blue text. You can change the style with UITextView's linkTextAttributes property.

If you set editable to NO on the UITextView, links become tappable.

深海蓝天 2024-11-10 06:58:51

Jeremy 发布了 JTextView,一个基于核心文本的 UITextView 支持属性文本(包括链接)的类似物。

简而言之,JTextView:

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

Jeremy has published JTextView, a Core Text-based UITextView analogue that supports attributed text, including links.

In a nutshell, JTextView:

  • Creates its own attribute for links by using a custom name for the attribute name and the attribute value contains a representation of the corresponding URL
  • In -drawRect:, it uses a data detector for links. If a link has been found, it sets its custom attribute for the corresponding range
  • In its tap gesture recogniser method, it gets the line frame that contains the tap point. For each glyph run in that line, it gets its attributes and checks whether they contain the custom attribute for links. If so, it opens the URL.
源来凯始玺欢你 2024-11-10 06:58:51

我知道这是一个老问题,但是......

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

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

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

I know this is an old question, but...

Try using NSMutableAttributedString. It has two methods for attributes:

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

and

void addAttributes:(NSDictionary *) range:(NSRange)
街角迷惘 2024-11-10 06:58:51

使用 UITextView,它会解析您的文本并将链接转换为蓝色下划线的超链接:

textView.dataDetectorTypes = UIDataDetectorTypeLink;

Use a UITextView, it will parse your text and turn links into blue underlined hyperlinks:

textView.dataDetectorTypes = UIDataDetectorTypeLink;
迷爱 2024-11-10 06:58:51

是的,它不存在,如果您将搜索范围缩小到 iOS 库,它不会为您提供 NSLinkAttributeName 的任何结果。它不在那里……官方的,也许是私人的?

这篇好文章提到了超链接,但没有显示示例。我怀疑公共 API 方法是否可行。

Yes it doesn't exist, if you reduce your search to iOS Library it won't give you any results for NSLinkAttributeName. It's not there...officially, maybe private?

This nice article mentions hyperlinks but does not show an example. I doubt that it's possible with public API methods.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文