覆盖OSX中的关闭操作

时间:2015-08-11 23:48:06

标签: macos

如何覆盖关闭按钮操作以显示确认对话框? 将代码放在app delegate的

applicationWillTerminate

是这种代码的正确位置吗?

我有一个使用CloudKit的应用程序。 它会不断地保存,导致尝试保存到iCloud时出错。

所以我试图在退出之前显示一个对话框以确认用户是否想要同步。

1 个答案:

答案 0 :(得分:3)

如果你想阻止一个窗口关闭,那么NSWindow的代表就是它所在的地方。无论是AppDelegate(这是大多数Xcode模板的默认设置)还是NSWindowController,如果这就是你呈现窗口的方式。您要从NSWindowDelegate实施的方法是-windowShouldClose:-windowWillClose:。如果您想阻止关闭窗口,只需从NO返回-windowShouldClose:

如果您要停止退出应用,则应查看NSApplicationDelegate并覆盖-applicationShouldTerminate:并返回NSTerminateCancel以阻止该应用终止。

简而言之,"应该"方法允许你阻止动作发生," will"方法只是说它会发生,你可以处理它。