【问题标题】:Intercept Command-Quit in Mac App?在 Mac App 中拦截命令退出?
【发布时间】:2014-06-24 03:16:29
【问题描述】:

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

我找到了以下解决方案,但它必须是过时的,因为我收到错误:

    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);

其他方法?谢谢。

【问题讨论】:

    标签: objective-c macos cocoa osx-mavericks


    【解决方案1】:

    只需让您的应用程序委托实现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;
    }
    

    【讨论】:

    • 完美,没想到那样做。非常感谢。
    猜你喜欢
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多