【问题标题】:NSPopUpButton in a toolbar with fixed image similar to Pages.app UI工具栏中的 NSPopUpButton 具有类似于 Pages.app UI 的固定图像
【发布时间】:2015-05-15 21:13:21
【问题描述】:

Pages (Numbers, Keynote) 中的工具栏有一个带有固定图像的 NSPopUpButton(与选择的菜单无关)。使用视图调试发现这是一个标准的 NSPopUpButton,带有固定的图像。

根据关于setImage: 的 NSPopUpButton 文档,

此方法无效。 弹出按钮单元格中显示的图像取自选定的 菜单项(在弹出菜单的情况下)或从第一个菜单项 (在下拉菜单的情况下)。

这意味着这个标准 NSPopUpButton 具有非标准行为。

如何实现?因为setImage: 没有效果,子类化 NSPopUpButtonCell 并覆盖-drawImage:withFrame:inView: 没有效果(因为它从不被调用)。

【问题讨论】:

  • 我成功地将弹出按钮从Pop up设置为Pull down,这只是IB中设置的另一种操作模式。但是我的按钮位于窗口中,不知道工具栏是否显示不同的行为
  • 你是说你的弹出按钮的图片是静态的吗?我不确定这怎么可能,因为它与文档冲突。我知道要获得下拉行为,您只需设置Pull down
  • 然后图像是静态的……至少对我来说是这样。我已经在 IB 中完全设置了它,分配了一个图像,设置为下拉,然后它对我有用。
  • 您是否还在 IB 中添加了一个菜单,还是以编程方式加载了该菜单?这很有趣,因为我发现了非常不同的行为。

标签: objective-c macos cocoa nspopupbutton


【解决方案1】:

这里的问题是混乱:下拉菜单将其菜单的第一个菜单项显示为图像/标题

不要使用-setImage: 在下拉菜单中显示静态图像。而是将菜单的第一个元素设置为您要显示的图像/标题,并将选择选项添加为附加菜单项。

@Volker 是绝对正确的。这是内置行为,但您通过设置菜单中的第一个元素而不使用 setImage:setTitle: 来设置图像。

例如,https://github.com/danieljfarrell/Toolbar-with-Pull-Down-Menu

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-24
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多