我想为Mac(小牛)制作一个不处理命令退出选项的应用程序。

我找到了以下解决方案,但由于我遇到了错误,它必须已过时:

    CFMachPortRef eventTap = CGEventTapCreate(kCGHIDEventTap,
                                          kCGHeadInsertEventTap,
                                          kCGEventTapOptionDefault,
                                          CGEventMaskBit(kCGEventKeyDown),
                                          &KeyDownCallback,
                                          NULL);

CFRunLoopSourceRef runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, eventTap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopCommonModes);
CFRelease(runLoopSource);
CGEventTapEnable(eventTap, true);


还有其他方法吗?谢谢。

最佳答案

只需让您的应用程序委托实现applicationShouldTerminate:方法即可:

- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
    // work out whether to actually quit or not
    BOOL shouldQuit = /* insert logic here */;
    if (shouldQuit)
        return NSTerminateNow;
    else
        return NSTerminateCancel;
}

10-01 08:56