class viewcontroller1: UIViewController {
我有這兩個圖像。點擊下一個按鈕後,10秒後image1變爲image2。但是,如果在10秒過期之前再次單擊下一個按鈕,我不知道如何取消/重置延遲動作。這是我到目前爲止的代碼...如果在執行延遲時間之前點擊觸發它的同一按鈕,我該如何取消延遲動作?
var image1: UIImageView!
var image2: UIImageView!
func delay(_ delay:Double, closure:@escaping()->()) {
let when = DispatchTime.now() + delay
DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
}
@IBAction func nextbutton(_ sender: Any) {
image1.image = UIImage(named: "image1")
delay(10) { self.image2.image = UIImage(named: "image2")
}
}
}
我真的很感激任何幫助。由於
每次使用定時器和重置定時器時,動作調用爲 –
由於您正在使用'anyncAfter',因此無法取消操作。正如邁克所說,使用'定時器',您可以通過'invalidate'取消 – Paulw11