将可点击的 URL 添加到我的 Cocoa 视图 - 我做错了吗?

发布于 2024-11-07 22:07:00 字数 756 浏览 0 评论 0 原文

我需要在我的视图中动态设置可点击 URL 的文本和值。

我已经使用 NSTextView 工作了,但是设置字体似乎非常复杂,而且我不知道如何使文本居中:

NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"Click me"
                                                                               attributes:[[NSDictionary alloc] initWithObjectsAndKeys:[NSFont fontWithName:@"Lucida Grande" size:14], NSFontAttributeName, nil]];
[attrString beginEditing];
[attrString addAttribute:NSLinkAttributeName value:@"http://example.com" range:NSMakeRange(0, [attrString length])];
[attrString endEditing];
[[self.downloadLinkTextField textStorage] setAttributedString:attrString];
  1. 我做错了吗?我在 URL 对象库中找不到任何内容。
  2. 是否可以将链接居中对齐?

I need to dynamically set the text and value for a clickable URL in my view.

I've got it working using an NSTextView, but it seems ridiculously complicated to set the font and I can't figure out how to center the text:

NSMutableAttributedString* attrString = [[NSMutableAttributedString alloc] initWithString:@"Click me"
                                                                               attributes:[[NSDictionary alloc] initWithObjectsAndKeys:[NSFont fontWithName:@"Lucida Grande" size:14], NSFontAttributeName, nil]];
[attrString beginEditing];
[attrString addAttribute:NSLinkAttributeName value:@"http://example.com" range:NSMakeRange(0, [attrString length])];
[attrString endEditing];
[[self.downloadLinkTextField textStorage] setAttributedString:attrString];
  1. Am I doing it wrong? I can't find anything in the Object Library for URLs.
  2. Is it possible to center align the link?

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

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

发布评论

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

评论(2

温柔一刀 2024-11-14 22:07:00

你做对了。 Apple 有一个关于此的方便的文章,其中提供了NSAttributedString 上的 >Hyperlink 类别,如果您愿意的话可以使用。它们的类别还对链接文本进行了强调和着色。

至于居中,这是视图的功能,而不是文本本身的功能。您可以使用 -[NSTextalignCenter:]NSTextNSTextView),在使用 setSelectedRange:,或者如果您希望视图中的所有文本都居中,只需使用:

[myTextView setAlignment:NSCenterTextAlignment];

You've done it correctly. Apple has a handy writeup about this which provides a Hyperlink category on NSAttributedString that you can use if you're so inclined. Their category also underlines and colorizes the link text.

As for centering, that's a function of the view, and not the text itself. You can use -[NSText alignCenter:] (NSText is the superclass of NSTextView), after you have selected your string using setSelectedRange:, or if you want all the text in the view to be centered, just use:

[myTextView setAlignment:NSCenterTextAlignment];
白况 2024-11-14 22:07:00

该线程中缺少一些非常重要的东西:

在属性字符串的开始/结束编辑之后和
在设置属性字符串之前...

您需要在文本字段上调用以下内容,否则链接将不起作用:

[self.downloadLinkTextField setAllowsEditingTextAttributes:YES];
[self.downloadLinkTextField setSelectable:YES];

我从 这里

glhf!
-埃里克

There is something very important missing in this thread:

after begin/end editing of the attributed string and
before setting the attributed string...

you need to call the following on your textfield or the link will not work:

[self.downloadLinkTextField setAllowsEditingTextAttributes:YES];
[self.downloadLinkTextField setSelectable:YES];

I received this information from here

glhf!
-eric

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