在RubyMotion中使用@selector

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在RubyMotion中使用@selector相关的知识,希望对你有一定的参考价值。

如何将以下方法调用从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中执行此操作?也许用块?

答案

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

self.faceView.addGestureRecognizer(
  UIPinchGestureRecognizer.alloc.initWithTarget(
  self.faceView, action:'pinch'))
另一答案
@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的实例变量,有时手势识别器和GC不能很好地协同工作。 (在我的经验中)

以上是关于在RubyMotion中使用@selector的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RubyMotion 中使用 React Native

RubyMotion宣布将支持Android

RubyMotion 中 CoreData 迁移的问题

如何使用 Rubymotion 在 ios 模拟器中指定用户位置

在 RubyMotion 应用程序中使用 Facebook SDK

RubyMotion 未加载 AudioToolbox 框架