等待執行我所試圖實現:取消DispatchWorkItem在DispatchQueue
我想這取決於如果用戶在touchesBegan
方法一次或兩次點擊屏幕來執行兩個不同的任務。
在這樣做的過程中,我延遲執行singleTapTask
0.3秒,以便能夠取消屬於doubleTapTask
的DispatchWorkItem
。
我的方法:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let singleTapTask = DispatchWorkItem {
// single tap
}
let doubleTapTask = DispatchWorkItem {
// double tap
}
if touch.tapCount == 1 {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3, execute: singleTapTask)
} else if touch.tapCount == 2 {
singleTapTask.cancel()
DispatchQueue.main.async(execute: doubleTapTask)
}
}
}
問題:
出於某種原因,singleTapTask
仍與即使singleTapTask
已經取消了doubleTapTask
一起執行。 爲什麼singleTapTask
首先被執行,將非常感謝您的幫助:)
爲什麼(指同時敲擊數)抽頭數你沒有使用UIGestureTapRecognizer? –
我想只想要屏幕的某個部分有資格獲得單/雙觸摸識別,但我可能最終會這樣做@NikitaGaydukov – Devapploper
看看這個答案:https://stackoverflow.com/questions/9346315/uigesturerecognizer換部分的-A-的UIView。它將幫助您限制可點擊區域。 –