gpt4 book ai didi

cocoa - NSTableView NSCell 中的链接

转载 作者:行者123 更新时间:2023-12-03 16:22:56 25 4
gpt4 key购买 nike

过去几天我一直在阅读和尝试在自定义绘制的 NSCell 中允许链接,但基本上没有任何可用的东西,每种方法总是存在问题。

有人知道有效的方法吗?

我使用 - (void)drawInteriorWithFrame:(NSRect)theCellFrame inView:(NSView *)theControlViewm 自定义绘制 NSCell

NSCell 只是一个可变高度的文本 block ,其中包含链接,有些单元格有链接,有些没有。

我尝试将 nsattributedstring 与 NSLinkAttributeName 一起使用

我尝试拦截对单元格的所有点击,然后尝试将他们点击的位置与文本中链接的位置进行匹配,但这从未成功。

我基本上已经尝试了所有板上可以找到的所有建议,但大多数评论都是旧的,所以我希望有人能找到一个好方法来做到这一点。

谢谢大卫

最佳答案

我还没有完全尝试过,但请尝试一下:

首先,对于超链接,我在 NSAttributedString 上使用一个类别,类似于 post来自苹果开发者文档。这里的示例为您提供了 NSAttributedString 'hyperlinkFromString:withURL:` 的方法

其次,为表格创建一个委托(delegate),并实现 tableView:willDisplayCell:forTableColumn:row: 方法。

在该方法中,

setAttributedStringValue:[NSAttributedString hyperlinkFromString:YOUR_STRING withURL:YOUR_URL]

或者,如果您还需要非超链接字符串文本,

setAttributedStringValue:[SOME_NON_HYPERLINKED_STRINGappendAttributedString:[NSAttributedString hyperlinkFromString:YOUR_STRING withURL:YOUR_URL]]

如果这是您自定义绘制 NSCell 的唯一原因,您可以尝试删除自定义类,因为这应该适用于 NSTextFieldCell。不过,我在网上看到,有些人在将文本字段单元格中的属性字符串居中时遇到了麻烦,所以我希望它能正常工作。另一项警告:使用委托(delegate)方法时,请确保设置要针对所有条件更改的单元格属性。我引用:

Because aCell is reused for every row in aTableColumn, the delegate must set the display attributes both when drawing special cells and when drawing normal cells.

来自“http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTableViewDelegate_Protocol/Reference/Reference.html”(抱歉,StackOverflow 不允许我发布多个超链接)

希望这有帮助。

关于cocoa - NSTableView NSCell 中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3866815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com