我需要在MonoMac中子类化NSApplication,以覆盖NSApplication的sendEvent ( C#术语中的SendEvent)方法,以便接收媒体键事件(播放、暂停、下一个、Macbook上的上一个),如下所述:Listening to mac keyboard play/pause events和此处: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应该在启动时调用一次)都没有被调用,因为我没有得到任何控制台输出。
这样做的正确方法是什么?
发布于 2012-08-12 11:52:23
仅仅将NSApplication子类化并不足以让您的子类替换正常的子类。你也必须在你的应用程序plist中设置你的NSPrincipalClass。
请参见:
https://stackoverflow.com/questions/11790349
复制相似问题