在NSView子类中没有调用cancelOperation

问题描述 投票:4回答:3

当我按下Esc时,cancelOperation:在我的骨架NSView子类中没有被调用。

我检查了并且在keyDown上收到了Esc密钥。此外,还会调用其他操作消息(例如moveLeft)。

该视图是如下所示的Window的一部分:

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

我究竟做错了什么?

macos cocoa nsview keydown esc-key
3个回答
0
投票

你是用cancelOperationcancelOperation:实现的吗?有很大的不同。方法签名应该是:

- (void)cancelOperation:(id)sender

这适用于我与香草NSView


0
投票

我派生的NSView也有同样的问题。实施acceptsFirstResponder后如下解决:

- (BOOL)acceptsFirstResponder
{
    return YES;
}

0
投票

就我而言,我有一个带有几个NSWindows的应用程序。我不得不在我的[self.window makeFirstResponder:self]子类中调用NSView以使视图响应cancelOperation:

© www.soinside.com 2019 - 2024. All rights reserved.