Objective c 单击NSTextField标签以模拟指向文件夹的超链接

Objective c 单击NSTextField标签以模拟指向文件夹的超链接,objective-c,cocoa,Objective C,Cocoa,我有一个NSTextField标签,我希望在用户单击它时发生一些事情 我想我可以创建一个iAction并将其链接到标签,但似乎什么都没有发生 有什么建议吗 意图: 我这样做的原因是因为我想要一个指向文件夹的超链接标签。也许我采取了完全错误的方法 我的PersonController.m中的iAction定义 - (IBAction)surnameLabelSelected:(id)sender { NSLog(@"This should do something!"); } XIB文件

我有一个NSTextField标签,我希望在用户单击它时发生一些事情

我想我可以创建一个iAction并将其链接到标签,但似乎什么都没有发生

有什么建议吗

意图:

我这样做的原因是因为我想要一个指向文件夹的超链接标签。也许我采取了完全错误的方法

我的PersonController.m中的iAction定义

- (IBAction)surnameLabelSelected:(id)sender {
    NSLog(@"This should do something!");
}
XIB文件


在XIB文件中,我在
所选姓氏标签
静态文本
NSTextField标签之间建立了一个
接收操作
连接

标签是不可编辑的文本字段,因此不会向其目标发送操作。您需要使用NSButton并关闭其边框绘图,并调整其大小以尽可能适合其文本以模拟标签。

您有两个选项。弗朗西斯的答案是一种选择。另一个选项是子类化NSTextField并覆盖
-mouseDown:
。类似这样的东西(从我的头顶上写下,未经测试):


如果NSTextField的样式更接近您需要的外观,那么这可能是更好的方法。如果您需要NSButton的功能(单击时突出显示等),请使用Francis的解决方案。

另一个选项是在标签前面创建一个透明按钮(无标题/图像/边框,瞬间推入),其框架与标签相同。并相应地设置按钮的动作。

好建议!最后,我尝试创建一个超链接字段,并认为可以修改标签的样式,使其看起来像超链接。您的建议是否仍然正确?不幸的是,在文本字段中创建真实的超链接比设置链接属性要复杂一些。我建议你检查一下以供参考。这在今天不太管用。NSButtons喜欢绘制自己的背景,并根据类型更改颜色。不再有内置的按钮类型和选项组合来消除这种情况。实际上,我修改了上面提到的DSClickableURLTextField,以便在用户单击的区域没有URL打开时,完全按照您的建议触发操作。简单的更改,感谢您的想法。它可以完美地工作,除了光标更新,但这很容易解决。我们可以检查nstextfield中点击了哪个单词吗
@interface ClickableTextField : NSTextField
@end

@implementation ClickableTextField

- (void)mouseDown:(NSEvent *)theEvent
{
    [self sendAction:[self action] to:[self target]];
}

@end