2013-10-22 64 views

回答

2

子類的NSOutlineView拍下下來的關鍵事件爲:

- (void)keyDown:(NSEvent *)theEvent 
{  
    switch([theEvent keyCode]) 
    { 
     case 53: // esc 
      NSLog(@"ESC"); 
      // Implement the functionality you want when esc is pressed 

      break; 

     default: 
      [super keyDown:theEvent]; 
    } 
} 
+0

Thanx。我通過對nsoutlineview進行分類來了解這種方式。但我只想使用Appdelegate.m。我也試過用NSControlTextDidChangeNotification。當textfield不是空白​​時,這給了我逃跑事件。當文本字段爲空/空白時,所有這些都是徒勞的。 –

+0

在這種情況下,您可以嘗試通過註冊全局keydown事件,檢查按下的按鍵是否是Esc,並且您的應用程序是最前面的。如果是的話,那麼實現你的功能。 – Neha

+0

你可以註冊全局鍵事件:[NSEvent addGlobalMonitorForEventsMatchingMask:NSKeyDownMask handler:^(NSEvent * event){//你的代碼在這裏}]; – Neha

0

那麼你可以找出whther退出鍵被按下或不試試下面一行,並在你的方法用在需要下列條件: -

NSUInteger flags = [theEvent keycode]; 
//After that 

If (flags==53) 
{ 

NSlog(@"Escape key pressed"); 
}