我正在实现一个具有按钮和下拉列表的自定义NSToolbarItem
,例如Mail。但是,唯一不起作用的是NSMenuItem
被禁用。无论我做什么,我都无法启用它。知道我在这里做错了什么吗?
class DropdownTypeToolbarItem: NSToolbarItem {
private var handler: ((NSNumber) -> Void)?
init(itemIdentifier: NSToolbarItem.Identifier, handler: ((NSNumber) -> Void)?) {
super.init(itemIdentifier: itemIdentifier)
self.handler = handler
let control = NSSegmentedControl(labels: ["Open", ""],
trackingMode: .momentary,
target: self,
action: #selector(open))
let menu = NSMenu(title: "")
menu.addItem(withTitle: "Export", action: #selector(export(_:)), keyEquivalent: "")
control.setMenu(menu, forSegment: 1)
control.setShowsMenuIndicator(true, forSegment: 1)
self.view = control
}
@objc func open() {
print("select open")
self.handler?(0)
}
@objc func export(_ sender: Any) {
print("select export")
self.handler?(1)
}
}
NSToolbarItem 本身不是响应程序链的一部分,当菜单项的target
为nil
时,响应程序链用于确定是否可以启用菜单项。在这种情况下,您应该将菜单 iem 的target
显式设置为工具栏项。