为什么我的NSMenuItem有动作时被禁用?

问题描述 投票:0回答:1

我正在实现具有按钮和下拉菜单的自定义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)
    }
}
swift appkit nsmenu nsmenuitem nstoolbaritem
1个回答
0
投票

NSToolbarItem本身不是响应程序链的一部分,当菜单项的targetnil时,它用于确定菜单项can是否启用。在这种情况下,您应该仅将菜单iem的target明确设置为工具栏项。

© www.soinside.com 2019 - 2024. All rights reserved.