2011-11-16 61 views
1

我有一個NSTextView,我使用它作爲字母的全屏畫布。如何在NSTextView中禁用這些鍵盤快捷鍵?

下列按鍵組合可以完成我不想做的事情(例如隱藏我的窗口,鎖定計算機)。

如何禁用它們來阻止它們被調用?

  • 命令一個
  • 命令小時
  • 命令-J
  • 命令-P
  • 命令-U

回答

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:

0

覆蓋這些鍵組合的NSEvents,而不執行其他操作。