UIAccessibility.isInvertColorsEnabled задерживается до перерисовки - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь увидеть, когда пользователь включил / изменил Smart Invert Colors (или обычные инвертированные цвета), чтобы настроить мой вид. Но, похоже, что изменение черты для вида сильно задерживается и / или не обновляется до следующего цикла розыгрыша. Это связано с тем, что в данный момент это представление отображается на экране, и пользователь, например, изменяет элементы специальных возможностей из Центра управления. Я имею в виду UIAccessibility.isInvertColorsEnabled, в частности.

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

Прослушивание изменений:

NotificationCenter.default.addObserver(self, selector: #selector(changedColorInversion(_:)), name: UIAccessibility.invertColorsStatusDidChangeNotification, object: nil)

Внесение изменений:

@objc func changedColorInversion(_ notification: Notification) {
    NotificationCenter.default.post(name: AWColorThemeChanged, object: nil)
    someOtherThing.adjustSelections()
}

В каком-то другом классе viewcontroller:

func adjustSelections() {
    print((UIAccessibility.isInvertColorsEnabled ? "true" : "false"))
    // false right away, do a button press or call same function, then prints true
}

edit: Кажется, что все в порядке на iOS 12, но имеет эту проблему на iOS 13.

...