gpt4 book ai didi

cocoa - 当应用程序不在 Lion 上时,NSNotificationCenter Observer 停止接收事件

转载 作者:行者123 更新时间:2023-12-03 16:52:53 25 4
gpt4 key购买 nike

我有一个应用程序,它从默认的 NSNotificationCenter 订阅特定类型的通知。

在 OSX Lion 上,它工作正常,只是当应用程序失去焦点(另一个应用程序变为事件状态)时,它会停止接收事件。当应用程序获得焦点时,它会再次开始接收事件。该应用程序在以前版本的 OSX 上没有这种行为,它总是收到通知,即使它失去焦点也是如此。

我可以做什么来改变这种行为?

谢谢!内森

最佳答案

我知道回答这个问题有点晚了,仍然是为了我的记录以及如果有人仍在搜索。

我的 OS X 菜单栏应用程序也有同样的问题。我希望该应用程序能够观察所有状态。

原因:

当应用程序失去焦点时,观察者就会暂停。

即。当应用程序变为非事件状态时,它会调用该方法

-(void)applicationDidResignActive:(NSNotification *)notification

默认情况下,NSDistributedNotificationCenter 对象会被挂起。

解决方案:我为 NSDistributedNotificationCenter 创建了一个对象

NSDistributedNotificationCenter *center=[NSDistributedNotificationCenter defaultCenter];

然后当应用程序失去焦点时,调用 applicationDidResignActive 方法并在内部通过向 setSuspended 方法发送 NO 使 NSDistributedNotificationCenter 对象从挂起状态恢复。

-(void)applicationDidResignActive:(NSNotification *)notification
{
[center setSuspended:NO];
}

然后应用程序开始观察,即使它失去焦点。

关于cocoa - 当应用程序不在 Lion 上时,NSNotificationCenter Observer 停止接收事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8130570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com