有沒有辦法讓我的應用程序的窗口接收鍵盤和/或鼠標事件(即用戶點擊窗口的按鈕),同時仍然保持焦點到另一個不相關的應用程序?保持另一個應用程序的窗口處於活動狀態,同時仍從另一個應用程序的窗口接收鼠標事件?
我試過配置我的窗口在不同的級別,包括[myWindow setLevel:NSPopUpMenuWindowLevel]無濟於事。
有沒有辦法讓我的應用程序的窗口接收鍵盤和/或鼠標事件(即用戶點擊窗口的按鈕),同時仍然保持焦點到另一個不相關的應用程序?保持另一個應用程序的窗口處於活動狀態,同時仍從另一個應用程序的窗口接收鼠標事件?
我試過配置我的窗口在不同的級別,包括[myWindow setLevel:NSPopUpMenuWindowLevel]無濟於事。
找到它。簡單但難以捉摸。
使用NSPanel並確保面板樣式爲非激活(NSNonactivatingPanelMask)或在IB的檢查器中勾選相同的選項。
你應該能夠處理的鼠標點擊,而不通過發送NSApp
a preventWindowOrdering
message,然後再返回YES
讓您的觀點(至少處理鼠標點擊的那些),以應對acceptsFirstMouse:
messages訂購您的窗口前。
你不應該讓你的應用程序處理輸入而不自己排序。如果出現的字段被另一個窗口遮擋,用戶可能不會意識到他們的輸入正在進行的位置。
感謝您的提示,但它仍然沒有按照我希望的方式工作。對於我的窗口類,我重寫了canBecomeKeyWindow(返回NO),makeKeyWindow(什麼也不做),accepFirstResponder(返回NO)和canBecomeMainWindow(什麼也不做)。 我也定義爲你建議我自己的NSButton類來覆蓋accepFirstMessage: 基本上,我需要我的窗口彈出並讓用戶點擊它的按鈕,而前一個應用程序(比如說iTunes)仍然處於活動狀態和菜單欄主動/焦點。 – hishamk 2010-03-20 11:47:54