objective c - Usando @selector en RubyMotion
objective-c syntax (2)
¿Cómo puedo traducir la siguiente llamada de método de ObjectiveC a la sintaxis de RubyMotion:
[self.faceView addGestureRecognizer:[
[UIPinchGestureRecognizer alloc] initWithTarget:self.faceView
action:@selector(pinch:)]];
Llegué hasta aquí:
self.faceView.addGestureRecognizer(
UIPinchGestureRecognizer.alloc.initWithTarget(
self.faceView, action:???))
Entiendo que @selector(pinch:)
indica una delegación al método de pinch
objeto del receptor, pero ¿cómo haría esto en RubyMotion? Tal vez usando un bloque?
Debería poder usar una cadena para especificar el selector:
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
Si no desea que el controlador del método tome un argumento, use la action:''pinch''
lugar. Luego buscará un método como este:
def pinch
end
Usar una var de instancia ( @gesture = ...
) es una buena idea aquí porque a veces los reconocedores de gestos y el GC no juegan bien juntos si no haces la var de gestos de una instancia de un UIViewController. (En mi experiencia)