[英]How to make a view controller first responder for an NSView in Cocoa
我正在嘗試為基於自定義NSOpenGLView的視圖實現視圖控制器(這是Cocoa,而不是Cocoa Touch)。
該視圖包含在已加載NIB的窗口中,但沒有自己的NIB。 實際上,該窗口包含視圖的多個實例。
我想將鼠標事件路由到控制器而不是視圖。 我希望用戶在相應的視圖中單擊后立即發生這種情況。
那怎么辦呢?
我試圖用控制器作為參數讓視圖的beginFirstResponder方法調用makeFirstResponder。 但是,這似乎不起作用,如果NSView :: becomeFirstResponder返回YES,則視圖仍接收鼠標事件而不是控制器事件。 如果返回否,那么我的兩個類都不會收到鼠標事件。
當然,我可以在視圖中實現鼠標事件處理方法,並將其顯式轉發給控制器,但是似乎應該有一種更好的方法來處理它。
對於一般的“第一響應者”狀態,我推薦Charles Parnot的MTViewController ,這是一個NSViewController子類,該子類使用KVO來確保控制器位於響應者鏈中,而無需您費力。
但是,您也需要鼠標事件。 確實沒有解決辦法-您的視圖將需要將鼠標事件轉換為控制器交互。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.