Обнаружение изменения цвета акцента macOS 10.14

В macOS 10.14 вы можете определить, когда системная тема изменилась, прослушав следующее уведомление:

[NSDistributedNotificationCenter.defaultCenter addObserver: self
                                                  selector: @selector(OSThemeChanged:)
                                                      name: @"AppleInterfaceThemeChangedNotification"
                                                    object: nil];

Но это не срабатывает при изменении Accent color (NSColor.controlAccentColor ). У меня есть изображение, которое я хочу изменить на основе цвета акцента, поэтому я хотел бы знать, когда оно изменится.

Кто-нибудь смог в этом разобраться?


person Tyler McMartin    schedule 24.10.2019    source источник


Ответы (1)


Ключ AppleColorPreferencesChangedNotification должен работать, я считаю:

    [[NSDistributedNotificationCenter defaultCenter] addObserver:self
                                                        selector:@selector(accentColorChanged:)
                                                            name:@"AppleColorPreferencesChangedNotification"
                                                          object:nil];

Уведомление не отправляется до тех пор, пока настройка не будет изменена и общее окно системных настроек не будет закрыто.

Однако не удалось найти документацию, на которую можно было бы ссылаться.

person R4N    schedule 24.10.2019
comment
Кажется, это помогло, спасибо. Кроме того, я нашел еще один обходной путь, когда drawRect: вызывается при изменении accentColor. Сохранив детали акцента, а затем сравнив их с текущими деталями акцента, я также смог обнаружить изменение (и не дожидаясь закрытия окна настроек). - person Tyler McMartin; 25.10.2019