UIResponder doesNotRecognizeSelector: приложение падает с этой ошибкой - PullRequest
0 голосов
/ 11 июля 2019

У меня сбой для приложения, которое находится в App Store.

Ниже приведено то, что у меня есть в журналах сбоев.

У меня есть контроллер базового вида в моем проекте.Я расширяю каждый контроллер вида с помощью контроллера базового вида.

В контроллере базового вида в viewDidAppear я устанавливаю цвет строки состояния с помощью приведенного ниже кода.

static func adjustStatusBarToColor(colorAsString: String) {

    print("adjustStatusBarToColor===\(globalTopPadding)")

    if (globalTopPadding>=1) {
        if let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as? UIView {
            let statusBar2: UIView = statusBar.subviews[0]
                let setForegroundColor_sel: Selector = NSSelectorFromString("setForegroundColor:")
                statusBar2.perform(setForegroundColor_sel, with: UIColor(hexString: colorAsString))
        }
    } else {
        if let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as? UIView {
            let setForegroundColor_sel: Selector = NSSelectorFromString("setForegroundColor:")
            statusBar.perform(setForegroundColor_sel, with: UIColor(hexString: colorAsString))
        }
    }
}

Есть идеи, почему происходит сбой приложения?

enter image description here

1 Ответ

2 голосов
/ 11 июля 2019

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

let setForegroundColor_sel: Selector = NSSelectorFromString("setForegroundColor:")

if statusBar2.responds(to: setForegroundColor_sel) {
    statusBar2.perform(setForegroundColor_sel, with: UIColor(hexString: colorAsString))
}

Я считаю, что этот код возвращает некоторое представление, которое не реагирует на изменение цвета:

let statusBar2: UIView = statusBar.subviews[0]
...