Я создаю подкласс NSView и запускаю полноэкранный режим, когда приложение завершает запуск. Представление доступно как свойство fooView
в делегате приложения.
// AppDelegate.m
- (void)applicationDidFinishLaunching:(NSNotification*)notification {
[[self window] makeKeyAndOrderFront:self];
[[self fooView] enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];
}
Сам класс FooView
реализует следующие функции.
// FooView.m
- (void)keyDown:(NSEvent*)event {
NSLog(@"%@ %@ - %@", self.className, NSStringFromSelector(_cmd), event);
[self interpretKeyEvents:[NSArray arrayWithObject:event]];
}
- (void)cancelOperation:(id)sender {
NSLog(@"%@ %@ - %@", self.className, NSStringFromSelector(_cmd), sender);
[self exitFullScreenModeWithOptions:nil];
}
После выхода из полноэкранного режима представление больше не получает события клавиатуры. Почему?
Редактировать:
Похоже, это как-то связано с тем, как я выхожу из полноэкранного режима. Когда я щелкаю в представлении (а не в окне), keyDown:
и cancelOperation:
отвечают следующим образом.