【问题标题】:Quitting an app using the Red X button?使用红色 X 按钮退出应用程序?
【发布时间】:2013-01-05 04:15:36
【问题描述】:

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

【问题讨论】:

  • @duskwuff 虽然这不适用于 applescript 应用程序?
  • 哦,我错过了那个细节。没关系!不知道。
  • @duskwuff 一切都好我忘了包括它无论如何谢谢=P

标签: xcode macos applescript


【解决方案1】:

我不知道 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: 是您想要的。我只是想表明有很多方法可以完成任务。

恭喜你的第一个应用!

【讨论】:

【解决方案2】:

@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找到了这个解决方案

【讨论】:

    猜你喜欢
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多