2012-05-07 15 views
20

¿Cómo traduzco el siguiente método llamado de ObjectiveC a la sintaxis RubyMotion:@selector en RubyMotion

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

Tengo este momento:

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

entiendo la @selector(pinch:) indica una delegación a la receptor objeto pinch método, pero ¿cómo haré esto en RubyMotion? Tal vez usando un bloque?

Respuesta

26

Usted debe ser capaz de usar sólo una cadena para especificar el selector:

self.faceView.addGestureRecognizer(
    UIPinchGestureRecognizer.alloc.initWithTarget(
    self.faceView, action:'pinch')) 
+1

¡NO HAY MANERA! :) ¡Gracias! – kolrie

+6

El video introductorio de Pragmatic Studios cubre esto, y muestra un par de buenos ejemplos de la migración del código Obj-C a ruby: http://pragmaticstudio.com/screencasts/rubymotion –

+4

Supongo que su acción de pellizco se verá así: 'def pellizco (reconocedor)' que significa que su selector realmente será 'pellizco': –

0
@gesture = UIPinchGestureRecognizer.alloc.initWithTarget(self.faceView,action:'pinch:') 

self.faceView.addGestureRecognizer(@gesture) 

def pinch(foo) 

end 

Si no desea que el controlador de métodos para tomar un argumento, utilice action:'pinch' lugar. A continuación, buscar un método como este:

def pinch 

end 

El uso de un var instancia (@gesture = ...) es una buena idea aquí porque a veces los reconocedores gesto y la GC no juegan bien juntos si no se realiza el gesto var una instancia var de un UIViewController. (En mi experiencia)