Ios 奇怪的巫婆行为

Ios 奇怪的巫婆行为,ios,swift,uikit,uiswitch,Ios,Swift,Uikit,Uiswitch,我正在开发一个智能家居应用程序,用户可以在其中切换设备 如果设备未连接,扳动开关可能有危险,因此在这种情况下,我使用switch.isOn=false将开关扳回,并显示警报 有时开关处于冻结状态,此时ui将其显示为半开(圆圈为左,背景为蓝色),属性显示为关闭状态 是否有任何已知的解决方法?还是我是唯一一个遇到这个错误的人 谷歌没有给出一个直接的方法来解决这个问题 public class MyUIController: UIViewController{ ... weak var switch:

我正在开发一个智能家居应用程序,用户可以在其中切换设备

如果设备未连接,扳动开关可能有危险,因此在这种情况下,我使用
switch.isOn=false将开关扳回,并显示警报

有时开关处于冻结状态,此时ui将其显示为半开(圆圈为左,背景为蓝色),属性显示为关闭状态

是否有任何已知的解决方法?还是我是唯一一个遇到这个错误的人

谷歌没有给出一个直接的方法来解决这个问题

public class MyUIController: UIViewController{
...
weak var switch:UISwitch!

@IBAction
public func toggle(sender:Any){
    if (device.isConnected){
        device.sendUpdate(switch.isOn)
    }else{
        switch.isOn = false
    }
}
...
}

当设备未连接时,应禁用开关,以提供更好的用户体验。如果在用户切换开关后需要切换开关的状态,请等待动画完成。这将修复冻结和奇怪的图形效果

switch.isEnabled = false

您应该显示代码,但如果设备未连接,为什么不禁用交换机?这比让用户做一些事情,然后告诉他们不能在断开设备连接和实际更新deviceOk之间有一点超时要好得多。您仍然应该禁用该开关。编辑问题以显示代码。即使检测到设备已断开连接并显示警报,也无需关闭开关,直到警报解除。这可能会解决您的问题。我明天再试试,您是否从其他地方访问
isOn
是否已断开连接
正在等待服务器响应(例如同步调用?)您显示的是哪种警报?显示警报时,您是否可能正在拍摄UI的屏幕截图?您是否在某处手动删除动画(例如,view.layer.removeAnimations()
)?我认为您的方法是正确的,但我不知道如何在动画之后运行iAction,或者从用户单击到事件到达的时间差可能小于动画(异步),正如paulw11所建议的,我明天将尝试您的想法