Подкласс NSApplication в MonoMac

Мне нужно создать подкласс NSApplication в MonoMac, чтобы переопределить метод NSEpplication sendEvent (SendEvent в C#) для получения событий медиа-клавиш (Play, Pause, Next, Prev на Macbooks), как описано здесь: Прослушивание событий play / pause на клавиатуре Mac и здесь: https://bitbucket.org/nkreeger/whitedragon/src/6f530c8a34a7/component/sbAppleMediaKeyController.mm

До сих пор я придумал этот код:

class MainClass
{
    static void Main (string[] args)
    {
        MyApp.Init ();
        MyApp.Main (args);
    }
}
class MyApp : NSApplication
{
    public override void SendEvent (NSEvent theEvent)
    {
        Console.WriteLine ("event received!");
        base.SendEvent (theEvent);
    }
    public override void SetMainMenu (NSMenu aMenu)
    {
        Console.WriteLine ("main menu set!");
        base.SetMainMenu (aMenu);
    }
}

Но ни SendEvent, ни SetMainMenu (которые я добавил для целей тестирования, так как SetMainMenu должен вызываться один раз при запуске) не вызываются, поскольку я не получаю никакого вывода на консоль.

Как правильно это сделать?

1 ответ

Просто подкласс NSApplication недостаточно для подкласса заменить нормальный. Вы должны настроить свой NSPrincipalClass в вашем приложении, а также.

Увидеть:

https://developer.apple.com/library/mac/#documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

Другие вопросы по тегам