我有一個NSTextView,我使用它作爲字母的全屏畫布。如何在NSTextView中禁用這些鍵盤快捷鍵?
下列按鍵組合可以完成我不想做的事情(例如隱藏我的窗口,鎖定計算機)。
如何禁用它們來阻止它們被調用?
- 命令一個
- 命令小時
- 命令-J
- 命令-P
- 命令-U
我有一個NSTextView,我使用它作爲字母的全屏畫布。如何在NSTextView中禁用這些鍵盤快捷鍵?
下列按鍵組合可以完成我不想做的事情(例如隱藏我的窗口,鎖定計算機)。
如何禁用它們來阻止它們被調用?
首先,確保你理解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:
覆蓋這些鍵組合的NSEvents,而不執行其他操作。