2011-11-16 16 views
1

私はNSTextViewを持っています。これは、文字用のフルスクリーンキャンバスとして使い慣れています。NSTextViewでこれらのキーボードショートカットを無効にするにはどうすればよいですか?

以下のキーの組み合わせは、実行したくない操作(たとえば、ウィンドウを隠す、コンピュータをロックするなど)を行います。

どうすれば呼び出すことを止めることができますか?

  • コマンド
  • コマンド-H
  • コマンド-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]; 
} 

しかしそのdoesnのユーザーがCommand + Hでアプリを非表示にしないようにします。そのキーコンボを無効にするには、MainMenu XIBでキー同等物を削除するか、NSApplicationをサブクラス化してオーバーライドすることができます。hide:

0

これらのキーの組み合わせに対してNSEventsをオーバーライドして通常どおりに処理します。

関連する問題