Возможно достичь. Убедитесь, что ваши подклассы NSPanel
(есть причина, по которой вы не используете окно?) -canBecomeKeyWindow
, и как панель, так и ее contentView
'-acceptsFirstResponder
методы возвращают TRUE.
Другой подход более низкого уровня, который вы можете попробовать, если разрабатываете приложение, использующее нестандартный пользовательский интерфейс (например, игру), заключается в создании подкласса NSApplication
'- sendEvent
метода. Моя выглядит так:
- (void)sendEvent:(NSEvent *)event
{
id delegate = [self delegate];
if(([event type] != NSAppKitDefined) && [delegate shouldHandleEvents] && [delegate respondsToSelector:@selector(handleEvent:)])
[delegate handleEvent:event];
else
[super sendEvent:event];
}