2015-06-28 58 views
0

在過去的幾天裏,我已經回到了一段時間以來一直存在的問題。我一直在嘗試將Cocoa窗口集成到我的應用程序中,但是[NSApplication run]不適合我的程序模型,並且獲取用戶輸入比預期更難,因爲窗口沒有收到任何事件。Cocoa Windows,沒有收到活動

我用XCode檢查了_currentEvent的值,它始終爲零,這導致我認爲窗口並沒有捕獲事件。我將焦點放在了窗口的屏幕截圖上,儘管它看起來並不活躍,因爲圖標沒有着色。我還在Objective-C中包含了窗口創建的代碼C

注意:調用[應用程序運行]確實有效,並且我接收到一旦被調用的活動窗口的輸入。

更新:我重載了運行函數,並試圖重複我在程序集中找到的內容,並且我得到了一個處理輸入的工作函數。唯一的問題是,如果我調用CocoaWindowUpdate中的函數,即使它們是相同的函數,我也只能調用CreateCocoaWindow中的函數。因爲它在CreateCocoaWindow函數中,我不能再次調用它。我目前認爲這是與Objective-C內存管理有關的事情,我幾乎沒有經驗。

來源:https://gist.github.com/Joshhua5/4c3a37a683d1cd107a18

變量:

Variables

窗口:

Window

+0

我沒有得到你的要點鏈接。 –

+0

對不起,更新了鏈接 –

+0

你爲什麼期望'_currentEvent'被設置?例如,這可能是' - [NSApplication run]'在事件離開隊列後設置的。既然你沒有調用這個方法,你必須期望一些'NSApplication'通常不會做的事情。我建議您嘗試爲您的應用使用更傳統的架構。如有必要,將主線程專用於Cocoa,並將其他代碼移至輔助線程。 (我有一些這方面的經驗。) –

回答

0

的問題是,我的實現運行功能沒有被從所謂的主線程。