禁用窗口工具栏按钮的NSToolbar自定义功能?

4
我希望禁用Cocoa窗口中位于右上方的工具栏按钮上的Command + Click组合键。我仍希望让用户显示和隐藏工具栏,但不希望他们能够选择其他显示模式(例如小图标、无图标等)。有人找到了这样做的方法吗?提前感谢您的帮助。
2个回答

7
您不需要子类化NSToolbar来实现此功能。在您的NSWindowController子类中,将以下内容放入您的awakeFromNib中:
- (void) awakeFromNib
{
  NSToolbar *tb = [[self window] toolbar];
  [tb setAllowsUserCustomization:NO];
}

您还有一个额外的好处,就是避免使用私有API。

不幸的是,这还不够。我想允许用户自定义工具栏上的项目,但我想禁用小尺寸图标和文本标签等功能。我希望通过标准右键单击菜单以及工具栏按钮(窗口右上角)上的Command + Click操作来禁用这些选项。为此,我需要按照上面所示的子类化。感谢您抽出时间回答 :) - user99950

3

您尝试过使用自定义的NSToolbar子类来覆盖setDisplayMode:和setSizeMode:方法,使其无效吗?这样做当然不会删除菜单项或自定义面板中的UI(假设您没有使用setAllowsUserCustomization:方法禁用它),但可能会防止它们执行任何操作。


1
谢谢。我对NSToolbar进行了子类化,使用了-(BOOL)_allowsSizeMode和-(void)setDisplayMode方法。 - user99950

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接