Как мне сообщить другим приложениям Какао, что настройки были изменены? - PullRequest
5 голосов
/ 25 декабря 2011

Я изменяю настройку .GlobalPreferences NSUserSubstitutions через класс NSUserDefaults (через PyObjC, но это не имеет значения).

Это предпочтение контролирует функцию замены текста (например, которая может заменить "©" на "(c)") OS X.

После изменения настроек я хочу, чтобы они сразу применялись во всех запущенных приложениях. Когда это изменяется через Системные настройки, оно применяется немедленно. Как я должен сигнализировать другим приложениям, чтобы применить это немедленно?

Обновление: Вот проект: https://github.com/ikonst/mac-tex-substitutions

1 Ответ

2 голосов
/ 29 декабря 2011

Используя следующий код:

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

Мне удалось обнаружить, что приложение «Системные настройки» публикует уведомление с именем «1004 *» при изменении настроек подстановок текста.

Зная это, теперь вы можете опубликовать соответствующее уведомление после изменения настроек, чтобы сообщить обо всех открытых приложениях:

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


Имейте в виду, что NSUserReplacementItemsEnabledChanged нигде не задокументировано, поэтому это поведение может измениться в любое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...