2012-02-25 26 views
4

cancelOperation:在我按下Esc時我的裸骨NSView子類中沒有被調用。cancelOperation在NSView子類中不調用

我選中了,並在keyDown上收到了Esc鍵。此外,其他操作消息(如moveLeft)正在被調用。

的看法是這樣所示的窗口的一部分:

[self.window addChildWindow:wc.window ordered:NSWindowAbove]; 
[wc.window makeKeyAndOrderFront:self]; 

我在做什麼錯?

回答

0

您是以cancelOperation還是cancelOperation:執行?有很大的不同。方法簽名應該是:

- (void)cancelOperation:(id)sender 

這適用於我的香草NSView

+0

是的。 cancelOperation: – hpique 2012-02-25 17:16:54

+1

問題可能是您正在實現'keyDown:',但是不會在您的實現中調用'interpretKeyEvents:'。你或者不需要實現'keyDown:',或者確保在你的實現中調用'[self interpretKeyEvents:[NSArray arrayWithObject:theEvent]]''。 – 2012-02-26 01:13:45

+0

不,我沒有實現keyDown :.我剛剛測試了Esc正在收到,然後將其刪除。 – hpique 2012-02-26 10:50:41

0

我派生的NSView也有同樣的問題。它正在執行acceptsFirstResponder如下解決後:

- (BOOL)acceptsFirstResponder 
{ 
    return YES; 
} 
0

在我的情況,我有一對夫婦的NSWindow秒的應用程序。我必須在我的NSView子類中調用 [self.window makeFirstResponder:self]才能使視圖響應cancelOperation: