NSWindow не получает события клавиатуры - PullRequest
4 голосов
/ 18 января 2012

Я создаю NSWindow из пакета, загруженного во время выполнения, поэтому у меня нет исходного кода для NSWindow, созданного при запуске приложения.Когда я показываю свое окно, оно получает событие мыши, но не получает никаких событий клавиатуры.Я попытался добавить окно с помощью следующих методов:

[_myWindow makeKeyAndOrderFront:nil];
[[NSApplication sharedApplication].mainWindow addChildWindow:_myWindow ordered:NSWindowAbove];
[NSApp beginModalSessionForWindow:_myWindow];

Во всех 3 случаях кажется, что главное окно поглощает все события клавиатуры.События мыши также просачиваются в исходное окно (я вижу мышь над бликами, а кнопки реагируют на щелчки через мое окно).Я также попробовал:

[_myWindow makeMainWindow];
[_myWindow orderWindow:NSWindowAbove relativeTo:[originalWindow windowNumber]];

Буду очень признателен за любые советы, чтобы события клавиатуры попадали в мое окно.

1 Ответ

0 голосов
/ 30 августа 2017

Вы можете создать подкласс NSApplication и переопределить sendEvent: для печати [[NSApplication sharedApplication] keyWindow] перед отправкой события в keyWindow (не забудьте вызвать super для фактической отправки события).

Если окно ключане получает события, тогда у вас может быть монитор событий где-нибудь, который захватывает события до того, как они отправлены.

...