Как получать события клавиатуры для NSView после выхода из полноэкранного режима?

Я создаю подкласс 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: отвечают следующим образом.

5
задан JJD 11 May 2011 в 13:10
поделиться