我有一个NSTextView,我可以用它来作为字母的全屏画布。
以下按键组合执行我不想做的事情(例如隐藏我的窗口,锁定计算机)。
如何禁用它们以阻止它们被调用?
答案 0 :(得分:3)
首先,请务必了解the path of key events和user 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,不做任何事情,而不是通常做的事情。