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

时间:2012-02-07 21:51:53

标签: objective-c cocoa

我有一个NSTextField标签,当用户点击它时我想要发生一些事情。

我以为我可以创建一个IBAction并将其链接到标签,但似乎没有任何事情发生。

有什么建议吗?

意向:

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

我的PersonController.m中的IBAction定义

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

XIB文件

在XIB文件中,我在Received ActionssurnameLabelSelected NSTextField标签之间建立了StaticText连接。

3 个答案:

答案 0 :(得分:20)

你有几个选择。弗朗西斯的答案是一种选择。另一种选择是子类化NSTextField并覆盖-mouseDown:。像这样的东西(写在我的头顶,未经测试):

@interface ClickableTextField : NSTextField
@end

@implementation ClickableTextField

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

@end

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

答案 1 :(得分:11)

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

答案 2 :(得分:2)

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