我的停靠菜单总是自动添加“退出”和其他 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/