我正在使用本指南制作一个测试全屏应用程序。但是,当我想获得关键输入时,我遇到了问题。
出于某种原因,似乎当您将 NSPanel 设置为占据屏幕时,您也失去了获取按键事件的能力。我尝试在用户键入时触发按钮s
,这在常规面板中工作正常,但在应用此更改时似乎不起作用。
我正在使用本指南制作一个测试全屏应用程序。但是,当我想获得关键输入时,我遇到了问题。
出于某种原因,似乎当您将 NSPanel 设置为占据屏幕时,您也失去了获取按键事件的能力。我尝试在用户键入时触发按钮s
,这在常规面板中工作正常,但在应用此更改时似乎不起作用。
是有可能实现的。确保您的子类化NSPanel
(是否有理由不使用窗口?)-canBecomeKeyWindow
,以及面板及其返回 TRUEcontentView
的方法。-acceptsFirstResponder
如果您正在设计使用非标准 UI(如游戏)的应用程序,您可以尝试的另一种较低级别的方法是子类化NSApplication
s -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];
}