Events Rubymotion:如何为NSView定义mouseDown事件?

Events Rubymotion:如何为NSView定义mouseDown事件?,events,rubymotion,mousedown,Events,Rubymotion,Mousedown,编辑:第一部分已解决 很抱歉我问了noob这个问题,但是我已经搜索了两天没有找到答案。 我已经阅读了有关事件处理的Objective-C文档,但我真的无法将其转换为RubyMoon 我只是试图在包含带有图像的子视图的NSView上定义mouseDown事件 有什么提示吗? 谢谢 新发行的 示例代码:用新版本更新(查看注释) 类视图控制器

编辑:第一部分已解决

很抱歉我问了noob这个问题,但是我已经搜索了两天没有找到答案。 我已经阅读了有关事件处理的Objective-C文档,但我真的无法将其转换为RubyMoon

我只是试图在包含带有图像的子视图的NSView上定义mouseDown事件

有什么提示吗? 谢谢

新发行的

示例代码:用新版本更新(查看注释)

类视图控制器
您的答案在文档中,但您只是错过了:)

处理鼠标按下事件由NSView的父类NSResponder处理: :

您只需要在视图上定义mouseDown

class MyView < NSView

  def mouseDown(event)
    # what you want to do
  end

end
class MyView
如果使用sugarcube gem,您可以这样实现:

button = UIButton.alloc.initWithFrame([0, 0, 10, 10])

button.on(:touch) { my_code }
button.on(:touch_up_outside, :touch_cancel) { |event|
    puts event.inspect
    # my_code...
}

# remove handlers
button.off(:touch, :touch_up_outside, :touch_cancel)
button.off(:all)

细节:

我已经尝试过这种方法,但不起作用。也许我遗漏了其他内容。@vash,您是否正确地将视图子类化,因为这是正确的方法。您应该检查您的代码,因为您有一个从NSView继承的ViewController类…您是对的,我忘了在代码中更改该类
@cView=ViewController.alloc.initWithFrame([[400500],[480200]])
@siekfried mouseDown事件现在可以工作了,但我面临一个新问题。我无法访问mouseDown块中的实例变量。这正常吗?我已经更新了原始问题上的代码如果我将变量更改为类变量
@@var=“variable”
代码可以工作,但我不知道这样做是否正确。在我的实际代码中,我必须访问其他类的实例变量,我认为更改类变量中的所有变量是不正确的。Sugarcube在osx上不可用。@siekfried现在它同时支持ios和osx。