繁体   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