取消 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.
是否可以取消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.