我已经制作了我的第一个Mac应用程序,它只有一个窗口,我希望它按下红色按钮时退出。此按钮关闭窗口而不是此刻退出应用程序,我似乎无法找到一种方法来编辑此按钮的行为任何提示?请注意,这是在Xcode 4中,是一个基于Applescript的应用程序。
答案 0 :(得分:3)
我不知道AppleScriptObjC,但是这里是你如何在objective-c中完成的。我相信你可以很容易地转换它们。
基本上你不需要修改任何东西。只需将此方法放入您的app委托中即可。当最后一个窗口关闭时,应用程序会自动调用它,因为它是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:是你想要的那个。我只想表明有很多方法可以完成任务。
祝贺你的第一个应用程序!
答案 1 :(得分:0)
@ 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
找到了这个解决方案