首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止NSToolbarItem被删除

防止NSToolbarItem被删除
EN

Stack Overflow用户
提问于 2021-01-03 14:41:44
回答 2查看 123关注 0票数 1

我希望防止用户删除某些工具栏项。它们仍然应该是可移动的,而不是re可移动的。

我尝试使用自定义NSToolbar实现创建一个自定义removeItem(at:)子类,但如果用户在自定义面板中从工具栏中拖出项,则甚至不会调用此方法。

委托似乎也没有公开这方面的功能。

如何禁用某些NSToolbarItem的删除?

EN

回答 2

Stack Overflow用户

发布于 2021-01-03 15:43:52

我不确定是否可以防止它被删除,但您可以实现可选的toolbarDidRemoveItem方法,并插入不希望将其移回的项:

代码语言:javascript
运行
复制
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)
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2021-01-04 18:35:34

因为如果在私有API调用停止工作时删除它们并不是非常关键,所以我选择了私有API解决方案。

代码语言:javascript
运行
复制
extension NSToolbarItem {

    func setIsUserRemovable(_ flag: Bool) {
        let selector = Selector(("_setIsUserRemovable:"))
        if responds(to: selector) {
            perform(selector, with: flag)
        }
    }
}

这和广告上说的完全一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65551047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档