【问题标题】:NSButton with clickable image and text带有可点击图像和文本的 NSButton
【发布时间】:2014-05-02 00:24:23
【问题描述】:

我创建了一个 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:)];

【问题讨论】:

    标签: objective-c cocoa nsbutton


    【解决方案1】:

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

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

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

    【讨论】:

    • 我不确定这是否正确。目前,当我单击按钮的文本部分时,图像会变暗,就像被单击一样。所以基本上点击文本部分是向用户提供正确的反馈,即它被点击了。但是,如果您单击按钮的图像部分,则不会显示该视觉反馈。无论我是否填充 NSButton 的 alternateImage 属性,情况都是如此。
    • 不,单击按钮的图像部分什么都不做。没有动画,也没有调用目标的动作。单击按钮的文本部分会为图像设置动画(通过显示替代图像)并调用目标的操作。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多