20

如何将以下方法调用从 ObjectiveC 转换为 RubyMotion 语法:

[self.faceView addGestureRecognizer:[
    [UIPinchGestureRecognizer alloc] initWithTarget:self.faceView
    action:@selector(pinch:)]];

我做到了这一点:

self.faceView.addGestureRecognizer(
  UIPinchGestureRecognizer.alloc.initWithTarget(
  self.faceView, action:???))

我理解这@selector(pinch:)表示对接收器对象pinch方法的委托,但我将如何在 RubyMotion 中执行此操作?也许使用块?

4

2 回答 2

26

您应该能够只使用一个字符串来指定选择器:

self.faceView.addGestureRecognizer(
  UIPinchGestureRecognizer.alloc.initWithTarget(
  self.faceView, action:'pinch'))
于 2012-05-07T17:34:27.187 回答
1
@gesture = UIPinchGestureRecognizer.alloc.initWithTarget(self.faceView,action:'pinch:')

self.faceView.addGestureRecognizer(@gesture)

def pinch(foo)

end

如果您不希望方法处理程序接受参数,请action:'pinch'改用。然后它将寻找这样的方法:

def pinch

end

在这里使用实例 var ( @gesture = ...) 是一个好主意,因为如果您不将手势 var 作为 UIViewController 的实例 var,有时手势识别器和 GC 不能很好地协同工作。(在我的经验中)

于 2018-03-04T08:40:53.833 回答