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

Cod*_*ama 7 cocoa objective-c

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

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

有什么建议?

意向:

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

我的PersonController.m中的IBAction定义

- (IBAction)surnameLabelSelected:(id)sender {
    NSLog(@"This should do something!");
}
Run Code Online (Sandbox Code Playgroud)

XIB文件

在XIB文件中,我在NSTextField标签Received Actions之间建立了连接.surnameLabelSelectedStaticText

And*_*sen 22

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

@interface ClickableTextField : NSTextField
@end

@implementation ClickableTextField

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

@end
Run Code Online (Sandbox Code Playgroud)

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


Fra*_*rew 11

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

  • 今天这不太管用。NSButton 喜欢绘制自己的背景并根据其类型更改颜色。不再有内置按钮类型和选项组合来消除这种情况。 (2认同)