cancelOperation не вызывается в подклассе NSView

cancelOperation: меня не зовут NSView подкласс, когда я нажимаю Esc.

Я проверил и ключ Esc получен на keyDown, Кроме того, другие сообщения действий (такие как moveLeft) называются.

Представление является частью окна, показанного так:

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

Что я делаю неправильно?

3 ответа

В моем случае у меня есть приложение с парой NSWindows. Мне пришлось позвонить [self.window makeFirstResponder:self] в моем NSView подкласс, чтобы представление отвечало на cancelOperation:,

Мой производный NSView была такая же проблема. Это было решено после реализации acceptsFirstResponder следующее:

- (BOOL)acceptsFirstResponder
{
    return YES;
}

Вы реализуете это как cancelOperation или же cancelOperation:? Там большая разница. Подпись метода должна быть:

- (void)cancelOperation:(id)sender

Это работает для меня с ванилью NSView,

Другие вопросы по тегам