【问题标题】:Drop-down menu in NSToolbar like Mail.appNSToolbar 中的下拉菜单,例如 Mail.app
【发布时间】:2018-04-27 15:51:49
【问题描述】:

我想要一个带有下拉菜单的工具栏按钮,例如 Mail.app 工具栏中的“标记”按钮:

我希望制作一个普通的 NSMenuItem 并添加一个菜单作为 menuFormRepresentation 可以解决问题,但该菜单仅在按钮进入溢出模式时出现。

我还希望添加一个 NSPopupButton 作为自定义视图会起作用,但这会使整个视图成为一个菜单,而我希望组件的左侧部分表现得像一个普通按钮,而右侧的下拉部分调出菜单。

是否有一些技巧可以让 NSToolbarItem 显示这样的组件,或者这两个自定义视图粘在一起?

【问题讨论】:

标签: cocoa appkit nspopupbutton nstoolbar


【解决方案1】:

NSToolbar 没有什么神奇之处。这只是您可以设置 NSSegmentedControl 的方法之一,无论它是作为工具栏项的自定义视图显示还是单独显示。

您无法在 Interface Builder(故事板)中进行设置,但 NSSegmentedControl 有用于将菜单分配给细分的 API:

segmentControl.setMenu(myMenu, forSegment: 1)
segmentControl.setShowsMenuIndicator(true, forSegment: 1) // for the little arrow

您可能希望将跟踪模式设置为momentary,因为您的段控件充当一组视觉连接的按钮,而不是选择 N 选择器。

当用户单击任一片段时,您的操作方法将需要使用selectedSegment 来决定是执行与“按钮”侧相关的操作还是忽略单击(让菜单显示另一侧)。

【讨论】:

  • NSToolbar 有时会对嵌入式控件做一些神奇的事情(例如,NSSearchField 在工具栏中的呈现方式与外部不同),所以我希望有某种方法可以为 NSButton 触发这种魔力。但是您的解决方案似乎并不太繁琐;一个快速原型看起来不错。谢谢!
猜你喜欢
  • 2012-07-05
  • 1970-01-01
  • 2015-03-15
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多