【问题标题】:Timer.scheduled(); I cannot stop variable++ cycleTimer.scheduled();我无法停止变量 ++ 循环
【发布时间】:2022-01-20 16:30:38
【问题描述】:

enter image description here

我怎样才能停止循环?

代码 1

 @objc func dismissImageView() {
    timer1 = Timer()
    timer1 = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(timerWillDisappear), userInfo: nil, repeats: true)
    
}

代码 2

   **When i touch on myView - timer's beginning and don't stop!**
@objc func timerWillDisappear() {
    if repeatsVar != 1.0 {
        repeatsVar! += 0.01
    } 
}

代码 3

else if repeatsVar == 1.0 { **This if doesn't work!!!**
            timer1.invalidate()
            timer1 = nil
            repeatsVar! -= 1
            self.view.removeFromSuperview()
        }

【问题讨论】:

  • timerWillDisappear 检查我的检查一次;我不能使用 timer1.invalide()

标签: swift timer cycle


【解决方案1】:

浮点数有一些错误。您可能不会得到正好是 1.0 的值。既然你的值一达到 1.0 就会停止,为什么不检查它是否小于 1.0 呢?

@objc func timerWillDisappear() {
    if repeatsVar < 1.0 {
        repeatsVar += 0.01
    } else 
        timer1.invalidate()
        timer1 = nil
        repeatsVar = 0
        self.view.removeFromSuperview()
    }
}

另请注意,您的 dismissImageView() 方法不应创建一个空计时器,然后再创建一个预定计时器:

@objc func dismissImageView() {
    //timer1 = Timer() <- Get rid of this line.
    timer1 = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(timerWillDisappear), userInfo: nil, repeats: true)
}

【讨论】:

  • 您还应该更改您的repeatsVar,使其不是可选的。没有理由这样做。 (去掉定义中的?
猜你喜欢
  • 2013-08-05
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 2018-09-26
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多