【问题标题】:NSWorkspaceDidActivateApplicationNotification fails when app is closed by clicking red cross and reopenedNSWorkspaceDidActivateApplicationNotification 通过单击红叉关闭应用程序并重新打开时失败
【发布时间】:2017-10-06 10:53:27
【问题描述】:

我正在开发一个 Mac OS 应用程序,该应用程序旨在跟踪用户使用的最前面的窗口应用程序。代码是这样的:

@interface MDAppController : NSObject <NSApplicationDelegate> {
NSApplication    *currentApp;
}
@property (retain) NSApplication *currentApp;
@end

@implementation MDAppController
@synthesize currentApp;

- (id)init {
    if ((self = [super init])) {
    [[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
        selector:@selector(activeAppDidChange:)
        name:NSWorkspaceDidActivateApplicationNotification object:nil];
    [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
        selector:@selector(activeAppDidTerminate:)
        name:NSWorkspaceDidTerminateApplicationNotification object:nil];
}
return self;
}

NSWorkspaceDidActivateApplicationNotification 无法在通过单击左上角的十字按钮关闭应用程序然后重新打开时发出通知。 如果我从 Dock 中退出应用程序并重新打开它,那么 NSWorkspaceDidActivateApplicationNotification 工作正常。 有什么建议为什么它在以前的情况下不起作用?提前致谢。

【问题讨论】:

    标签: objective-c macos nsworkspace


    【解决方案1】:

    我没有任何开发 MacOs 应用程序的经验,但是单击左上角的十字不会退出应用程序。只有那个窗口关闭。您可能需要为此使用其他方法。

    【讨论】:

    • 是的,我明白了。当应用程序通过十字按钮关闭时,它只会停用但不会退出。在这种情况下,NSWorkspaceDidDeactivateApplicationNotification 有效。但是,当我在关闭应用程序后重新打开应用程序时,NSWorkspaceDidActivateApplicationNotification 无法通知。有什么解决办法吗?
    • 对不起,我对 MacOs 开发一无所知。这只是我在使用 MacOs 时注意到的。
    猜你喜欢
    • 2011-07-26
    • 1970-01-01
    • 2013-08-29
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多