在NSView子类中没有调用cancelOperation

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在NSView子类中没有调用cancelOperation相关的知识,希望对你有一定的参考价值。

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

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

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

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

我究竟做错了什么?

答案

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

- (void)cancelOperation:(id)sender

这适用于我与香草NSView

另一答案

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

- (BOOL)acceptsFirstResponder
{
    return YES;
}
另一答案

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

以上是关于在NSView子类中没有调用cancelOperation的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 XIB 的自定义 NSView/UIView 子类?

如何将 nib 自定义视图绑定到 NSVIew 子类

NSView 子类的标记返回 -1

从 nib 以编程方式从 NSView 的子类加载对象

使用 NSView 进行图层支持的绘图时没有调用 drawRect

oc之mac中NSView的时间相应