首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MonoMac中的子类NSApplication

MonoMac中的子类NSApplication
EN

Stack Overflow用户
提问于 2012-08-03 14:21:41
回答 1查看 570关注 0票数 2

我需要在MonoMac中子类化NSApplication,以覆盖NSApplication的sendEvent ( C#术语中的SendEvent)方法,以便接收媒体键事件(播放、暂停、下一个、Macbook上的上一个),如下所述:Listening to mac keyboard play/pause events和此处:https://bitbucket.org/nkreeger/whitedragon/src/6f530c8a34a7/component/sbAppleMediaKeyController.mm

到目前为止,我想出了以下代码:

代码语言:javascript
复制
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应该在启动时调用一次)都没有被调用,因为我没有得到任何控制台输出。

这样做的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2012-08-12 11:52:23

仅仅将NSApplication子类化并不足以让您的子类替换正常的子类。你也必须在你的应用程序plist中设置你的NSPrincipalClass

请参见:

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11790349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档