我有一个NSTextField标签,当用户点击它时我想要发生一些事情。
我以为我可以创建一个IBAction并将其链接到标签,但似乎没有任何事情发生。
有什么建议吗?
意向:
我这样做的原因是因为我想要一个标签,它是指向文件夹的超链接。也许我完全采取了错误的做法?
我的PersonController.m中的IBAction定义
- (IBAction)surnameLabelSelected:(id)sender {
NSLog(@"This should do something!");
}
XIB文件
在XIB文件中,我在Received Actions
和surnameLabelSelected
NSTextField标签之间建立了StaticText
连接。
答案 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)
另一种选择是在标签前面创建一个透明按钮(没有标题/图像/边框,瞬间推入),与标签的框架相同。并相应地设置按钮的动作。