NSButton具有可点击的图像和文本

时间:2013-01-25 16:15:08

标签: objective-c cocoa nsbutton

我创建了一个NSButton(参见下面的代码)。按钮显示我想要的方式(无边框,图像在文本上方)。如果我单击按钮的文本部分,该按钮将按下并调用它的动作。如果我单击按钮的图像部分,那么绝对没有任何反应。如何使NSButton的图像部分可点击?我确信我可以继承NSButtonCell以使其工作,但我不明白为什么这是必要的。

NSButton *button = [[NSButton alloc] initWithFrame:NSZeroRect];
[button setBezelStyle:NSRegularSquareBezelStyle];
[button setBordered:YES];
[button setImagePosition:NSImageAbove];
[button setButtonType:NSMomentaryChangeButton];
[button setImage:[NSImage imageNamed:@"myImage"]];
[button setTitle:@"Button Title"];
[button setTarget:self];
[button setAction:@selector(buttonAction:)];

2 个答案:

答案 0 :(得分:0)

按钮本身的图像。无需点击它。您的点击事件将被buttonAction捕获。

您只需要显示点击图像的动画。为此,您需要另一个反转图像。并且跟踪鼠标按下事件,当您单击向下显示另一个图像时,当您释放鼠标(鼠标向上)时显示默认图像。

这会给人一种点击图像的感觉。

答案 1 :(得分:0)

也许其他一些视图与按钮的图像重叠?在上面的代码中,当然如果你提供适当的按钮框架,一切正常(对于有边框和无边框按钮)。在干净的项目中试一试。