class viewcontroller1: UIViewController {
我有这两张图片。单击下一步按钮时,image1 会在 10 秒后变为 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
不可取消
根据评论,您必须使用 Timer
以下是示例
创建全局变量
var timer:Timer?
和行动
@IBAction func btnImageChangedTapped(_ sender: UIButton) {
if (self.timer != nil) {
self.timer?.invalidate()
self.timer = nil;
}
timer = Timer.scheduledTimer(timeInterval: yourTime, target: self, selector: #selector(changeImage:), userInfo: sender, repeats: false)
}
关于ios - 如果在执行延迟时间之前单击触发延迟操作的同一按钮,我该如何取消延迟操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45874516/