当我按下Esc时,cancelOperation:
在我的骨架NSView
子类中没有被调用。
我检查了并且在keyDown
上收到了Esc密钥。此外,还会调用其他操作消息(例如moveLeft
)。
该视图是如下所示的Window的一部分:
[self.window addChildWindow:wc.window ordered:NSWindowAbove];
[wc.window makeKeyAndOrderFront:self];
我究竟做错了什么?
你是用cancelOperation
或cancelOperation:
实现的吗?有很大的不同。方法签名应该是:
- (void)cancelOperation:(id)sender
这适用于我与香草NSView
。
我派生的NSView
也有同样的问题。实施acceptsFirstResponder
后如下解决:
- (BOOL)acceptsFirstResponder
{
return YES;
}
就我而言,我有一个带有几个NSWindow
s的应用程序。我不得不在我的[self.window makeFirstResponder:self]
子类中调用NSView
以使视图响应cancelOperation:
。