簡體   English   中英

如何使可可中的NSView的視圖控制器成為第一響應者

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM