cocoa如何阻止停靠菜单上的 "Quit"菜单项

标签 cocoa menu menuitem exit

我的停靠菜单总是自动添加“退出”和其他 2 个菜单项,我如何阻止/修改它们?

更新:

确实没有办法删除/阻止/重定向“退出”菜单项。 最后像打击一样使用了彼得的推荐 希望对其他人有帮助

-(NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender
{
    if (needPassword)
    {
        [self checkPassword:self];
        return  NSTerminateCancel;
    }
    else 
    {
        return NSTerminateNow;
    }
}


-(void)checkPassword:(id)sender
{
    if(passwordCorrect)
    {   
        !needPassword;
            [[NSApplication sharedApplication] terminate:self];
    }
}

最佳答案

尝试拦截用户告诉应用程序退出的所有可能方式注定会失败。 (你还记得退出苹果事件吗?)

实现 the applicationShouldTerminate: method 会更容易、更有效在您的应用程序的委托(delegate)中。调出密码面板并返回NSTerminateLater。然后,当用户输入正确的密码或取消时,发送应用程序 a replyToApplicationShouldTerminate: message .

无论您已经撕掉哪个退出命令(菜单项等),请将它们放回去。让用户以正常方式调用正常的退出命令;这将触发前面提到的应该终止程序来确定退出是否真的会发生。

关于cocoa如何阻止停靠菜单上的 "Quit"菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424346/

相关文章:

jquery - 执行 jQuery 悬停下拉菜单的正确方法(无故障)

html - 仅使用 css 的下拉菜单问题

java - Struts 菜单中的 I18n 与 Struts 2

menuitem - 在 Spec 的 MultiColumnList 中打开菜单会给出 MNU

ASP.Net 菜单控件 - 水平 - 不显示子选项

objective-c - 使用 NSWorkspace launchApplicationAtURL 启动应用程序后获取退出状态

macos - 如何将 kFSEventStreamEventFlagEventIdsWrapped 与 FSEvents 一起使用?

javascript - CSS 悬停延迟

objective-c - Cocoa - 如何通过 NSMenuItem 的操作传递参数?

objective-c - 如何在 Cocoa WebView 上仅加载 HTML+CSS+JS 并停止加载图像