1

我有一个小的 OSX Cocoa 应用程序,它只显示一个 IKPicutreTaker 并将图片保存到一个文件中(如果已设置)。我使用 applicationShouldTerminateAfterLastWindowClosed: 在 pictureTaker 关闭时关闭应用程序。当我设置(当你选择了你想要的图片时完成)或者当你点击取消时,这一切都很好,但是当我点击窗口左上角的红色箭头时,应用程序不会退出窗口以这种方式关闭。这是预期的功能还是我做错了什么(没有设置一些标志?)。另外,有没有办法禁用这个按钮?

4

1 回答 1

3

单击红色按钮不会关闭应用程序,部分原因是该动词不与该名词一起使用。红色按钮关闭它所在的窗口;它不会退出您的应用程序。(在 Mac OS X 上,一个应用程序可以而且通常会有多个窗口。)

这就是applicationShouldTerminateAfterLastWindowClosed:进来的地方。每当用户关闭屏幕上的最后一个窗口时(无论是通过单击红色按钮,通过从文件菜单中选择关闭,还是通过其他方式),NSApplication 对象都会applicationShouldTerminateAfterLastWindowClosed:向其委托发送一条消息,以询问它是否应该终止应用程序。如果委托通过返回来响应消息YES,则应用程序将自行终止。

您没有确切说明您是如何“使用” <code>applicationShouldTerminateAfterLastWindowClosed:。如果你只是将它发送到某个对象,那是行不通的,因为你在问一个问题(“应用程序应该在最后一个窗口关闭后终止吗?”)然后忽略答案。如果您在一个对象中实现该方法,但该对象不是应用程序的委托,那也将不起作用——应用程序对象只将该消息发送给它的委托。

您需要在您的委托中实现该方法,并YES在用户关闭其最后一个窗口时应用程序终止时返回。

于 2009-11-12T19:00:10.830 回答