我需要创建一个快速演示应用程序(尽快)。它有一个 NSImageView(带有全窗口大小的照片),鼠标点在其上单击、拖动和移动。
还有一个 NSTextField(标签)来显示鼠标事件和窗口上的位置。
我已经使用 Cocoa 应用程序模板创建了一个项目,并创建了一个新的 ViewController,将视图控制器视图添加到 Windows contextView 中,并且 NSImageView 显示正常 - 标签也是如此。
但是诸如
之类的事件- ( void ) mouseDown:( NSEvent * )event;
- ( void ) mouseMoved:( NSEvent * )event;
什么都不要做。如果我那里有 NSLog,它们就永远不会被击中。
我已设定:
- ( BOOL ) becomesFirstResponder
{
return YES;
}
但这也没有任何区别。
有人可以指出我做错了什么吗?我是一名拥有 2 年以上经验的 iOS 开发人员,这是我的第一个 Mac OS X 应用程序。我必须在接下来的 24 小时内让它工作:(
要捕获鼠标向下/向上事件,您应该子类化
NSImageView
并在那里定义 mouseDown:
/mouseUp:
。然后您可以将这些事件转发到控制器。
鼠标事件试图在“视图控制器”类中使用。
我发现了一个示例代码(第三方),表明它们必须位于“NSView”对象中,因此我必须以编程方式创建一个自定义 NSView 对象来跟踪鼠标,并且一切正常。
这是网址:
http://www.markdouma.com/developer/MouseMovedvsTrackingAreas.zip
11年后我又来了:/
正如文档提到的在这里任何
NSResponder
都可以捕获鼠标事件,但不知何故NSViewController
不能,即使它继承自NSResponder
NSViewController的文档显示NSViewController继承自NSResponder。
奇怪。