通过窗口的工具栏按钮禁用 NSToolbar 自定义?

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

我希望禁用 Cocoa 窗口中工具栏按钮(位于右上角)上的 Command + Click 组合。我仍然想让用户显示和隐藏工具栏,但我不希望他们能够选择不同的显示模式(例如小图标,无图标等)。

有人找到办法做到这一点吗?预先感谢。

objective-c xcode macos cocoa
3个回答
8
投票

您不需要子类化 NSToolbar 来执行此操作。 在你的 NSWindowController 子类中,将以下内容放入你的 awakeFromNib 中:

- (void) awakeFromNib
{
  NSToolbar *tb = [[self window] toolbar];
  [tb setAllowsUserCustomization:NO];
}

您还可以获得避免使用私有 API 的额外好处。


3
投票

您是否尝试过使用自定义 NSToolbar 子类来重写 setDisplayMode: 和 setSizeMode: 而不执行任何操作?当然,这不会删除菜单项,也不会删除自定义表中的 UI(假设您没有使用 setAllowsUserCustomization: 禁用它),但它可能会阻止他们执行任何操作。


0
投票

在 macOS 15+ 上,您需要在

allowsDisplayModeCustomization
NO
实例上将此新值
NSToolbar
设置为
NSWindow
。最简单的方法是连接一个
IBOutlet
,然后在
awakeFromNib
中执行此操作:

// self.ToolB_All is my NSToolbar
self.ToolB_All.allowsUserCustomization = NO;   // for completion
if (@available(macOS 15.0, *)) {
    self.ToolB_All.allowsDisplayModeCustomization = NO;
}

在旧系统上,您仍然需要子类化。

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