Ios 中断开关拖动动作

Ios 中断开关拖动动作,ios,swift,uikit,uiswitch,Ios,Swift,Uikit,Uiswitch,我想知道是否有办法强制中断UISwitch拖动操作?(看起来很脏) 问题是: 在值更改时,myUISwitch更新状态并将.isUserInteractionEnabled设置为false,因此在异步操作完成并更新状态之前,不会处理进一步的点击(解锁UISwitch)。 如果用户通过拖动(点击并按住)切换UISwitch,它会将.isUserInteractionEnabled设置为false,但用户在握住手指的同时保持对开关的控制,然后可以随意翻转UISwitch并绕过.isUserInter

我想知道是否有办法强制中断
UISwitch
拖动操作?(看起来很脏)

问题是: 在值更改时,my
UISwitch
更新状态并将
.isUserInteractionEnabled
设置为
false
,因此在异步操作完成并更新状态之前,不会处理进一步的点击(解锁
UISwitch
)。 如果用户通过拖动(点击并按住)切换
UISwitch
,它会将
.isUserInteractionEnabled
设置为
false
,但用户在握住手指的同时保持对开关的控制,然后可以随意翻转
UISwitch
并绕过
.isUserInteractionEnabled

在iPhone设置菜单中使用随机
UISwitch
时,您也可以拖放
UISwitch
,但在某些时候,手势/拖动被取消,您将失去对它的控制。在
UISwitch
的公共API中,我没有看到这样做的内容

或者我不应该使用
valueDidChange()
?我看不到其他可靠的替代方案

编辑:一个TL;DR版本


问题是:如果用户按住水龙头,即使禁用用户交互,只要他按住最初的水龙头,他仍然可以移动开关。

我不明白你的问题。如果值没有更改,您肯定不会运行异步任务吗?就像只有当用户更改了交换机时,您才会运行异步,而这一点通过禁用交互来锁定交换机?请提供一些代码,使这更清楚!我不能复制。在“设置”中,我可以随心所欲地来回拖动开关。您是在设备上测试还是在模拟器上测试?拖动的行为往往有所不同。@AntersBear存在上面提到的问题:当使用UISwitch时,将
.isUserInteractionEnabled
设置为false将防止新的点击开关,但在用户按住控件时禁用它不会解除按住。因此,最终的结果是UISwitch.isUserInteractionEnabled为false,但用户仍然可以切换UISwitch@regina_fallangi是的,我知道,使用这个设备。以启动异步操作的东西为例,VPN连接UISwitch(可以100%复制)编辑:语法不能在VPN连接UISwitch上复制->