我制作了我的第一个 Mac 应用程序,它只有一个窗口,我希望它在您按下红色按钮时退出。此按钮关闭窗口,而不是目前退出应用程序,我似乎无法找到一种方法来编辑此按钮的行为任何提示?请注意,这是在 Xcode 4 中,并且是基于 Applescript 的应用程序。
2 回答
我不知道 AppleScriptObjC,但这是你在 Objective-c 中的做法。我相信你可以很容易地转换这些。
基本上你不需要修改任何东西。只需将此方法放在您的应用程序委托中即可。当最后一个窗口关闭时,应用程序会自动调用它,因为它是一个 NSApplication Delegate 方法。还有许多其他 NSApplication Delegate 方法,因此您应该查看这些方法以了解您还能做什么。祝你好运。
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
return YES;
}
顺便说一句,替代方法是使用 NSWindowDelegate 方法。您只需要将您的 AppDelegate (或任何其他类)设置为窗口的委托...
[[self window] setDelegate:self];
具体来说,您可以使用这些 NSWindowDelegate 方法中的任何一个来修改红色关闭按钮的行为。例如,您可以在其中发出 NSApp 的 terminate: 方法来按照您的要求进行操作,但您可以在其中执行任何操作。
- (BOOL)windowShouldClose:(id)sender
- (void)windowWillClose:(NSNotification *)notification
但是 applicationShouldTerminateAfterLastWindowClosed: 是你想要的。我只是想表明有很多方法可以完成任务。
恭喜你的第一个应用程序!
@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
我将此处理程序放在脚本块的末尾,但这可能无关紧要。
我在http://www.macscripter.net/viewtopic.php?pid=117933#p117933找到了这个解决方案