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