Objective c 带有可单击图像和文本的NSN按钮
我创建了一个NSButton(参见下面的代码)。按钮显示我想要的方式(无边框,图像在文本上方)。如果我单击按钮的文本部分,按钮将按下并调用其操作。如果我点击按钮的图像部分,那么绝对不会发生任何事情。如何使NSButton的图像部分可单击?我确信我可以将NSButtonCell子类化以实现这一点,但我不明白为什么这是必要的Objective c 带有可单击图像和文本的NSN按钮,objective-c,cocoa,nsbutton,Objective C,Cocoa,Nsbutton,我创建了一个NSButton(参见下面的代码)。按钮显示我想要的方式(无边框,图像在文本上方)。如果我单击按钮的文本部分,按钮将按下并调用其操作。如果我点击按钮的图像部分,那么绝对不会发生任何事情。如何使NSButton的图像部分可单击?我确信我可以将NSButtonCell子类化以实现这一点,但我不明白为什么这是必要的 NSButton *button = [[NSButton alloc] initWithFrame:NSZeroRect]; [button setBezelStyle:NS
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:)];
按钮本身上的图像。无需使其可点击。您的点击事件将被buttonAction捕获 您只需要显示单击图像的动画。为此,您需要另一个反转图像。并跟踪鼠标向下事件,当您单击向下显示其他图像时,当您释放鼠标(鼠标向上)时显示默认图像
这会给人点击图像的感觉。可能有其他视图与按钮的图像重叠?当然,在上面的代码中,如果您提供了适当的按钮框架,那么所有这些都可以正常工作(对于有边框和无边框的按钮)。在clean project中试用。我不确定这是否正确。当前,当我单击按钮的文本部分时,图像会变暗,就像正在单击一样。因此,基本上,点击文本部分就是向用户提供正确的反馈。但如果单击按钮的图像部分,则不会显示视觉反馈。无论我是否填充NSButton的alternateImage属性,情况都是这样。否,单击按钮的图像部分不起任何作用。。没有动画,且未调用目标的动作。单击按钮的文本部分(通过显示替代图像)为图像设置动画,并调用目标的操作。