首页 > 解决方案 > 防止 NSToolbarItem 被移除

问题描述

我想防止某些工具栏项被用户删除。它们应该仍然是可移动的,只是不可移动

NSToolbar我尝试使用自定义实现创建自定义子类removeItem(at:),但如果用户将项目拖出自定义调色板中的工具栏,似乎甚至不会调用此方法。

委托似乎也没有为此公开功能。

如何禁用某些NSToolbarItems 的删除?

标签: swiftmacoscocoaappkit

解决方案


我不确定你是否可以阻止它被删除,但你可以实现可选的 toolbarDidRemoveItem 方法并插入你不希望它被删除的项目:

import Cocoa

class WindowController: NSWindowController, NSToolbarDelegate {
    @IBOutlet weak var toolbar: Toolbar!
    override func windowDidLoad() {
        super.windowDidLoad()
        toolbar.delegate = self
    }
    func toolbarDidRemoveItem(_ notification: Notification) {
        if let itemIdentifier = (notification.userInfo?["item"] as? NSToolbarItem)?.itemIdentifier,
           itemIdentifier.rawValue == "NSToolbarShowColorsItem" {
            toolbar.insertItem(withItemIdentifier: itemIdentifier, at: 0)
        }
    }
}

推荐阅读