1

我有一个主消息循环。我正在寻找一种方法来检查事件是否是 AppleEvent 以及它的事件类是否属于“MyClass”然后做一些事情。我查看了 NSEvent 参考,但找不到我需要的东西。请问有人可以提出一种方法吗?

while (!shutdown_now_) 
    {
        NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
        NSEvent *event = [NSApp nextEventMatchingMask:NSAnyEventMask
                                            untilDate:[NSDate distantFuture]
                                               inMode:NSDefaultRunLoopMode
                                              dequeue:YES];

        //if event is AppleEvent AND event class is <MyEventClass> then do something

        if (event) [NSApp sendEvent:event];
        [pool drain];
}  
4

1 回答 1

1

你不能NSEvent像这样在你的循环中获得苹果事件。

因为NSEvent只是没有覆盖它。

文档

Cocoa 应用程序中的几乎所有事件都由 NSEvent 类的对象表示。(例外包括 Apple 事件、通知和类似项目。)每个 NSEvent 对象更狭义地代表一种特定类型的事件,每个都有自己的处理要求。以下部分描述了 NSEvent 对象的特征和可能的事件类型

您可以在文档中找到更多信息NSApplication


相反,您可以使用该类通过以下方法NSAppleEventManager注册您自己的 Apple 事件处理程序

- (void)setEventHandler:(id)handler
            andSelector:(SEL)handleEventSelector
          forEventClass:(AEEventClass)eventClass
             andEventID:(AEEventID)eventID
于 2015-05-21T15:18:55.970 回答