我正在使用Mac Catalyst开发应用程序。当用户在Mac版本上关闭窗口时,应用程序将终止。在可可中,可以使用以下命令更改此行为:
applicationShouldTerminateAfterLastWindowClosed
方法或通过在plist文件中将NSSupportsAutomaticTermination设置为NO。如何在Mac Catalyst应用程序中获得相同的功能?
yeotifhr1#
我已经与苹果技术开发人员支持讨论了这个问题。经过长时间的讨论,他们承认这是苹果方面的一个bug。已经升级到工程队了。更新:Apple工程团队提供了关于此问题的以下信息,并为我工作:我们能够通过在info.plist中添加NSSupportsAutomaticTermination = NO来防止退出行为
brvekthn2#
编辑
编辑结束
这只有在激活“支持多个窗口”时才有可能:
我的想法,为什么会是这样:macOS区分了应用程序和Windows。因此,如果您的应用程序只能打开一个窗口,关闭该窗口将告诉macOS关闭应用程序。PS:我在“支持多个窗口”模式下遇到了一些bug。我希望他们很快就会被删除。
5vf7fwbs3#
以下是我的解决方案,也许有人还在寻找这个:)首先,我们需要访问AppKit。在这个链接中,你可以找到一个很好的解释如何做到这一点,以及一些先睹为快的下一步。link一旦我们准备好了AppKit包,并阅读了如何禁用窗口上的缩放按钮的说明(在上面的链接中),我们就准备好做我们真正想要的事情了;这是为了避免在点击关闭按钮时应用程序终止。为此,我们将简单地劫持关闭按钮,并告诉它做我们需要的...
- (void) tweakWindowButtons { NSArray *windows = NSApplication.sharedApplication.windows; NSWindowCollectionBehavior behavior = NSWindowCollectionBehaviorFullScreenAuxiliary | NSWindowCollectionBehaviorFullScreenNone; for (NSWindow *window in windows) { [window setCollectionBehavior:behavior]; //-- Hijack close button action NSButton *button = [window standardWindowButton:NSWindowCloseButton]; [button setTarget:self]; [button setAction:@selector(closeButtonAction)]; button = [window standardWindowButton:NSWindowZoomButton]; [button setEnabled:NO]; } } - (void) closeButtonAction { NSApplicationActivationPolicy policy = NSApplicationActivationPolicyAccessory; //-- hide app icon and window NSApplication.sharedApplication.activationPolicy = policy; } }
要恢复视图,请将策略设置为NSApplicationActivationPolicyRegular顺便说一句,我假设我们也有一个状态栏图标,将作为一个锚的应用程序。
NSApplicationActivationPolicyRegular
3条答案
按热度按时间yeotifhr1#
我已经与苹果技术开发人员支持讨论了这个问题。经过长时间的讨论,他们承认这是苹果方面的一个bug。已经升级到工程队了。
更新:Apple工程团队提供了关于此问题的以下信息,并为我工作:
我们能够通过在info.plist中添加NSSupportsAutomaticTermination = NO来防止退出行为
brvekthn2#
编辑
此答案不起作用,请查看评论。
编辑结束
这只有在激活“支持多个窗口”时才有可能:
我的想法,为什么会是这样:macOS区分了应用程序和Windows。因此,如果您的应用程序只能打开一个窗口,关闭该窗口将告诉macOS关闭应用程序。
PS:我在“支持多个窗口”模式下遇到了一些bug。我希望他们很快就会被删除。
5vf7fwbs3#
以下是我的解决方案,也许有人还在寻找这个:)
首先,我们需要访问AppKit。在这个链接中,你可以找到一个很好的解释如何做到这一点,以及一些先睹为快的下一步。link
一旦我们准备好了AppKit包,并阅读了如何禁用窗口上的缩放按钮的说明(在上面的链接中),我们就准备好做我们真正想要的事情了;这是为了避免在点击关闭按钮时应用程序终止。为此,我们将简单地劫持关闭按钮,并告诉它做我们需要的...
要恢复视图,请将策略设置为
NSApplicationActivationPolicyRegular
顺便说一句,我假设我们也有一个状态栏图标,将作为一个锚的应用程序。