取消 UISwitch 的自动触发值改变事件

Cancel auto triggering value changed event for UISwitch

是否可以取消UISwitch的自动触发值改变事件? 我有 UISwitch 内部事件的触摸动作,我想先做后台工作,然后当工作完成时,我手动打开开关,而不是它在触摸后立即自动打开,即使后台工作还没有完成。

您可以关闭 "continues" 功能,这样您只会在内部触摸后得到一个 Value Changed 事件。这就是您要找的吗?

您可以不为 .ValueChanged 事件添加目标操作。只需在您的后台任务完成处理程序中执行 sing。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
    println("This is run on the background queue")
    dispatch_async(dispatch_get_main_queue(), {
        aSwitch.value = true
    })
})

编辑:

抱歉,我刚明白你的问题。你的意思是当用户按下它时 s 的值不应该首先改变,对吧?

答案:

您可以为 s 设置 userInteractionEnabled = false,然后使用 tapGestureRecognizer 在其顶部添加一个 UIView(不是 的子视图)。然后处理点击时的后台事件,转on/off s.