Xcode 使用红色X按钮退出应用程序?

Xcode 使用红色X按钮退出应用程序?,xcode,macos,applescript,Xcode,Macos,Applescript,我制作了我的第一个Mac应用程序,它只有一个窗口,我希望在你按下红色按钮时退出。这个按钮关闭窗口,而不是退出应用程序的时刻,我似乎找不到一个方法来编辑这个按钮的行为任何提示?注意,这是在Xcode 4中,是一个基于Applescript的应用程序。我不知道AppleScriptObjC,但这里介绍了如何在objective-c中实现它。我相信你可以很容易地转换这些 基本上你不需要修改任何东西。只需将此方法放在你的应用程序委托中。当最后一个窗口关闭时,应用程序会自动调用它,因为它是一个非应用程序委

我制作了我的第一个Mac应用程序,它只有一个窗口,我希望在你按下红色按钮时退出。这个按钮关闭窗口,而不是退出应用程序的时刻,我似乎找不到一个方法来编辑这个按钮的行为任何提示?注意,这是在Xcode 4中,是一个基于Applescript的应用程序。

我不知道AppleScriptObjC,但这里介绍了如何在objective-c中实现它。我相信你可以很容易地转换这些

基本上你不需要修改任何东西。只需将此方法放在你的应用程序委托中。当最后一个窗口关闭时,应用程序会自动调用它,因为它是一个非应用程序委托方法。还有许多其他的非应用程序委托方法,所以您应该看看这些方法,看看还可以做些什么。祝你好运

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
    return YES;
}
顺便说一下,替代方法是使用NSWindowDelegate方法。您只需要将您的AppDelegate(或任何其他类)设置为窗口的委托,并使用

[[self window] setDelegate:self];
具体来说,您可以使用这些NSWindowDelegate方法中的任何一种来修改红色关闭按钮的行为。例如,您可以在那里发出NSApp的terminate:method来按您的要求执行,但您可以在其中执行任何操作

- (BOOL)windowShouldClose:(id)sender

- (void)windowWillClose:(NSNotification *)notification
但是应用程序应该在LastWindowClosed之后终止:是您想要的。我只是想说明有很多方法可以完成任务


祝贺你的第一个应用

由@regulus6633提供的答案对我不起作用。Xcode生成失败

这是因为,与OP一样,我的Xcode应用程序是一个“Cocoa AppleScript”应用程序,AppDelegate是用AppleScript编写的

因此,解决方案是:

script AppDelegate

--- YOUR OTHER CODE ---

   --- QUIT APP WHEN WINDOW IS CLOSED ---
   on applicationShouldTerminateAfterLastWindowClosed_(sender)
      return true
   end applicationShouldTerminateAfterLastWindowClosed_

end script
我将这个处理程序放在脚本块的末尾,但这可能无关紧要


我在

@dashwuff找到了这个解决方案,但这对applescript应用程序不起作用?哦,我错过了那个细节。不要介意!不知道。@Dashwuff很好,我忘了把它包括在内了,无论如何谢谢=AppleScriptObjC的平移选项可以在这里找到(注意,它是在最后一个窗口关闭之后,不需要在任何时候按下红色的x):