macruby: использование метода ruby ​​в качестве AXObserverCallback - PullRequest
1 голос
/ 10 мая 2009

Я пытаюсь следить за изменением текстового поля, используя macruby.

AXObserverCreate ожидает AXObserverCallback в качестве параметра. Как передать функцию ruby ​​в качестве обратного вызова?

Моя функция в AX.m:

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

Вот как я хочу вызвать этот метод:

rb_main.rb

def my_callback *args
  p args
end

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

Что передать моей addNotificationWithElement функции, которая ожидает AXObserverCallback в качестве параметра обратного вызова?

Для справки: Документация Apple для AXObserverCallback

1 Ответ

0 голосов
/ 09 июня 2009

Вы должны иметь возможность передать любой Proc (или lambda), который принимает аргументы, приведенные в документации Apple. В этом случае:

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

Вы можете использовать следующее в своем примере (т.е. если обратный вызов является методом):

proc { |*args| my_callback *args }

Я не проверял его в тех случаях, когда требуется AXObserverCallback, но, похоже, это общая схема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...