Mac OSX Dev:自定义 ViewController 未接收鼠标事件

问题描述 投票:0回答:3

我需要创建一个快速演示应用程序(尽快)。它有一个 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 小时内让它工作:(

macos events mouse nsresponder
3个回答
1
投票

要捕获鼠标向下/向上事件,您应该子类化

NSImageView
并在那里定义
mouseDown:
/
mouseUp:
。然后您可以将这些事件转发到控制器。


0
投票

鼠标事件试图在“视图控制器”类中使用。

我发现了一个示例代码(第三方),表明它们必须位于“NSView”对象中,因此我必须以编程方式创建一个自定义 NSView 对象来跟踪鼠标,并且一切正常。

这是网址:

http://www.markdouma.com/developer/MouseMovedvsTrackingAreas.zip


0
投票

11年后我又来了:/

正如文档提到的在这里任何

NSResponder
都可以捕获鼠标事件,但不知何故
NSViewController
不能,即使它继承自
NSResponder

NSViewController的文档显示NSViewController继承自NSResponder。

奇怪。

© www.soinside.com 2019 - 2024. All rights reserved.