我一直在阅读并尝试在过去几天内在自定义绘制的NSCell中允许链接,并且基本上没有任何用处,每种方法都存在问题。
有没有人知道这样做的方法有效吗?
我是自定义绘制NSCell使用 - (void)drawInteriorWithFrame:(NSRect)theCellFrame inView:(NSView *)theControlViewm
NSCell只是一个可变高度的文本块,里面有链接,有些单元格有链接,有些则没有链接。
我尝试将nsattributedstring与NSLinkAttributeName
一起使用我已经尝试拦截所有点击到单元格,然后尝试匹配他们点击到文本中的链接所在的位置,但这种情况永远无法解决。
我基本上已经尝试了所有可以在所有主板上找到的建议,但大多数评论都是旧的,所以我希望有人找到了一个很好的方法来做到这一点。
谢谢大卫
答案 0 :(得分:-1)
我没有尝试过这个,但试一试:
首先,对于超链接,我在NSAttributedString上使用了一个类别,类似于Apple开发人员文档中的这个post。这里的示例为您提供了一个NSAttributedString'的超链接.FromString:withURL:`
其次,为表创建一个委托,并实现tableView:willDisplayCell:forTableColumn:row:
方法。
在那种方法中,
setAttributedStringValue:[NSAttributedString hyperlinkFromString:YOUR_STRING withURL:YOUR_URL]
或者,如果您还需要非超链接的字符串文本,
setAttributedStringValue:[SOME_NON_HYPERLINKED_STRING appendAttributedString:[NSAttributedString hyperlinkFromString:YOUR_STRING withURL:YOUR_URL]]
如果这是您自定义绘制NSCell的唯一原因,您可以尝试删除自定义类,因为这应该适用于NSTextFieldCell。我在网上看到,有些人在文本字段单元格中将属性字符串居中有问题,所以我希望它能正常工作。另一个警告:使用委托方法,请确保为所有条件设置要更改的单元属性。我引用:
因为aCell被重用于aTableColumn中的每一行,所以委托必须在绘制特殊单元格和绘制正常单元格时设置显示属性。
来自“http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTableViewDelegate_Protocol/Reference/Reference.html”(抱歉,StackOverflow不允许我发布多个超链接)
希望这有帮助。