我希望防止用户删除某些工具栏项。它们仍然应该是可移动的,而不是re可移动的。
我尝试使用自定义NSToolbar
实现创建一个自定义removeItem(at:)
子类,但如果用户在自定义面板中从工具栏中拖出项,则甚至不会调用此方法。
委托似乎也没有公开这方面的功能。
如何禁用某些NSToolbarItem
的删除?
发布于 2021-01-03 15:43:52
我不确定是否可以防止它被删除,但您可以实现可选的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)
}
}
}
发布于 2021-01-04 18:35:34
因为如果在私有API调用停止工作时删除它们并不是非常关键,所以我选择了私有API解决方案。
extension NSToolbarItem {
func setIsUserRemovable(_ flag: Bool) {
let selector = Selector(("_setIsUserRemovable:"))
if responds(to: selector) {
perform(selector, with: flag)
}
}
}
这和广告上说的完全一样。
https://stackoverflow.com/questions/65551047
复制相似问题