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