2009-05-10 8 views
1

Je tente de faire attention à un champ de texte à modifier, en utilisant macruby.macruby: Utilisation de la méthode ruby ​​comme AXObserverCallback

AXObserverCreate attend un AXObserverCallback comme paramètre. Comment passer une fonction ruby ​​comme rappel?

Ma fonction AX.m:

+ (AXError) addNotificationWithElement: (AXUIElementRef) element 
      forEvent:(CFStringRef) event_type 
      callback:(AXObserverCallback) acallback; 

Voilà comment je veux invoquer cette méthode:

rb_main.rb:

def my_callback *args 
    p args 
end 

p AX.addNotificationWithElement ref, 
         forEvent:'AXValueChange', 
         callback: *** What to write here?*** 

Que passer à ma fonction addNotificationWithElement qui attend une AXObserverCallback comme paramètre de rappel?

Pour référence: Apple documentation for AXObserverCallback

Répondre

0

Vous devriez être en mesure de passer une Proc (ou lambda) qui prend les arguments donnés dans la documentation d'Apple. Dans ce cas:

proc { |observer, element, notification, refcon| ... } 

Vous pouvez utiliser ce qui suit dans votre exemple (si le rappel est une méthode):

proc { |*args| my_callback *args } 

Je ne l'ai pas testé dans les cas où AXObserverCallback est nécessaire, mais cela semble être le schéma général.

Questions connexes