首页 > 解决方案 > 在 Xcode 11 和 iOS 13 上切换 UISwith 时应用卡住了

问题描述

我已经将我的 Xcode 从版本 10 更新到了 11。

但是现在我的应用程序不接受任何触摸事件,或者在我转动UISwitch. 然后我删除了所有连接UISwitch以检查错误是否来自我的代码。但我仍然遇到同样的问题。

有人有解决这个问题的想法吗?提前致谢。

标签: iosswifttouch-eventuiswitchxcode11

解决方案


好吧,我在运行 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 开始,“valueChanged”UISwitch 错误得到修复,我正在检查的 .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 代码相反。


推荐阅读