Приложение зависло при переключении UIS с Xcode 11 и iOS 13 - PullRequest
0 голосов
/ 06 октября 2019

Я обновил свой XCode с версии 10 до 11. Но теперь мое приложение не принимает какие-либо сенсорные события, или оно застревает, когда я поворачиваю UISwitch. Затем я удалил все соединения из UISwitch, чтобы проверить, не связана ли ошибка с моим кодом. Но все же я получаю ту же проблему. У кого-нибудь есть идея решить эту проблему. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 12 октября 2019

Я также часто использую переключатели, и они работают нормально для меня, пожалуйста, попробуйте это:

 @IBOutlet weak var switchOutlet: UISwitch!

    override func viewDidLoad() {
    super.viewDidLoad()
    switchOutlet.setOn(false, animated: false)

    if UserDefaults.standard.bool(forKey: "enableFoo") == true {   // whatever your if statement is.
        switchOutlet.setOn(true, animated: false)
    }

    }




 @IBAction func enableTouch(_ sender: UISwitch, forEvent event: UIEvent) {

    if sender.isOn == true {
        switchOutlet.setOn(true, animated: true)

    } else {
        switchOutlet.setOn(false, animated: true)

    }
}
0 голосов
/ 10 октября 2019

Хорошо, у меня была точно такая же проблема на устройствах под управлением iOS 13, и когда я запустил Xcode 11. Проблема (по крайней мере для меня) заключалась в том, что Apple (вероятно) исправила ошибку, связанную с «valueChanged». подключите UISwitch, см .:

В любом случае, раньше все происходило так, что действие для переключателя запускалось дважды, поэтому я (очевидно) сам установил переключатель в нужное состояние. Например:

@IBAction func notificationsSwitchTapped(_ sender: UISwitch) {
    if sender.isOn{
        sender.setOn(false, animated: true)
    }else{
        sender.setOn(true, animated: true)
    }
}

Но в iOS 13 Xcode 11 исправлена ​​ошибка UISwitch «valueChanged», и проверяемое мной значение .isOn () фактически уже является новым значением:

@IBAction func notificationsSwitchTapped(_ sender: UISwitch) {
    if sender.isOn{
        // The switch has been turned on
    }else{
        // The switch has been turned off
    }
}

Короче говоря, ваш коммутатор, вероятно, вызывался дважды, поэтому ваш логический параметр состояния UISwitch противоположен вашему Xcode 11 коду iOS 13.

...