Подкласс 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
в вашем приложении, а также.
Увидеть: