如何在NSTextView中禁用这些键盘快捷键?

时间:2011-11-16 07:00:11

标签: macos cocoa keyboard-shortcuts nstextview

我有一个NSTextView,我可以用它来作为字母的全屏画布。

以下按键组合执行我不想做的事情(例如隐藏我的窗口,锁定计算机)。

如何禁用它们以阻止它们被调用?

  • 命令一个
  • 命令-H
  • 命令-J
  • 命令P
  • 命令-U

2 个答案:

答案 0 :(得分:3)

首先,请务必了解the path of key eventsuser interface validation

我认为禁用您提及的操作的最佳方法是通过将NSTextView子类化并通过将文本视图声明为符合NSUserInterfaceValidations并编写验证方法来禁用其关联的菜单项:

- (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)anItem {

    SEL action = [anItem action];
    if (@selector(selectAll:) == action ||                    // command-a
        @selector(centerSelectionInVisibleArea:) == action || // command-j
        @selector(print:) == action ||                        // command-p
        @selector(underline:) == action) {                    // command-u

        return NO;
    }
    else return [super validateUserInterfaceItem:anItem];
}

然而,这并不妨碍用户通过Command + H隐藏应用程序。要禁用该键组合,您可以删除其在MainMenu XIB中的等效键,也可以子类化NSApplication并覆盖hide:

答案 1 :(得分:0)

覆盖这些组合键的NSEvents,不做任何事情,而不是通常做的事情。