2012-02-25 27 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: