如何通知其他Cocoa应用程序偏好被更改?

时间:2011-12-25 01:29:03

标签: macos cocoa nsuserdefaults

我正在通过NSUserDefaults类更改 .GlobalPreferences NSUserSubstitutions 首选项(通过PyObjC,但除此之外)。

此首选项控制OS X的文本替换功能(例如,可以用“©”代替“(c)”)。

更改首选项后,我希望它立即应用于所有正在运行的应用程序。通过“系统偏好设置”进行更改时,会立即应用。我应该如何通知其他应用程序立即应用它?

更新:以下是项目:https://github.com/ikonst/mac-tex-substitutions

1 个答案:

答案 0 :(得分:2)

使用以下代码:

[[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(gotIt:) name:nil object:nil];

当文本替换首选项发生变化时,我能够检测到系统偏好设置应用程序发布了名为NSUserReplacementItemsEnabledChanged的通知。

知道了,您现在可以在更改首选项后发布足够的通知,以便了解所有打开的应用程序:

[[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"NSUserReplacementItemsEnabledChanged" object:self];


请注意,NSUserReplacementItemsEnabledChanged未在任何地方记录,因此此行为可能随时更改。

相关问题