2009-06-16 67 views
0

我正在使用this guide進行測試全屏應用程序。但是,當我想要獲得重要輸入時,我遇到了一個問題。全屏按鍵操作

出於某種原因,您似乎在設置NSPanel佔用屏幕時,也失去了獲取按鍵事件的能力。當用戶鍵入s時,我嘗試做出按鈕觸發,在常規面板中可以正常工作,但在應用此更改時應用 時似乎不起作用。

回答

0

有可能實現。確保你的子類NSPanel的(是否有一個原因,你爲什麼不使用窗口?)-canBecomeKeyWindow,以及面板和它的contentView-acceptsFirstResponder方法返回TRUE。

如果您正在設計使用非標準UI(如遊戲)的應用程序,則可以嘗試的另一種較低級別的方法是子類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];  
} 
+0

哈利喬丹: 我使用NSPanel,因爲這是它說在一個關於全屏應用程序的教程做的。 :)在這種情況下使用NSWindow會更好嗎?不知道我的應用是否使用標準用戶界面,但我不相信它。那麼,在這種情況下,我是否只需要將canBecomeKeyWindow子類並使這兩個-acceptsFirstResponder方法返回TRUE? – PF1 2009-07-04 19:39:22