gpt4 book ai didi

ios - 如何用另一个 NSTimer 来停止 NSTimer?

转载 作者:行者123 更新时间:2023-11-30 13:49:03 26 4
gpt4 key购买 nike

注意:我在这个项目中使用 swift。

我目前正在开发我的第一个项目,如果在一段时间后没有按下按钮,我会尝试停止(无效)NSTimer。我找到了其他停止 NSTimer 的方法,但没有说明如何在一定时间后停止它,如果按钮实际上按下,则该时间会被重置。阅读所有内容以更清楚地理解。

现在这是我的代码;

@IBOutlet var Text: UILabel!
var timer: NSTimer!
var countdown: Int = 0

@IBAction func StartGame(sender: AnyObject) {
self.countdown = 20
self.timer = NSTimer.scheduledTimerWithTimeInterval(1.5, target: self, selector: "updateCountdown", userInfo: nil, repeats: true)
}

func updateCountdown() {

self.countdown--

if self.countdown == 0 {
self.timer.invalidate()
self.timer = nil
}

let texts: NSArray = ["Test", "Testing"]
let range: UInt32 = UInt32(texts.count)
let randomNumber = Int(arc4random_uniform(range))
let textstring = texts.objectAtIndex(randomNumber)

self.ColorText.text = textstring as? String
}

@IBAction func PlayerbuttonPRESSED(sender: AnyObject) {
if Text.text == "Test" {
//Something happens
}
if Text.text == "Testing" {
//Something happens
}

我非常想知道的是,如果在更改 ColorText.text 之前按下按钮,我将如何让其他事情发生! (如果在 1.5 秒后更改文本之前按下按钮)。

诗。抱歉代码很长,我认为这是必要的。 :-)

最佳答案

有不同的方法可以做到这一点。一种方法是,您可以在按下按钮时将 bool 值设置为 true,然后在 updateCountdown 中检查 bool 值。

例如:

func updateCountdown() {

self.countdown--

if self.countdown == 0 && YOUR_BUTTON_BOOL {
self.timer.invalidate()
self.timer = nil
}

let texts: NSArray = ["Test", "Testing"]
let range: UInt32 = UInt32(texts.count)
let randomNumber = Int(arc4random_uniform(range))
let textstring = texts.objectAtIndex(randomNumber)

self.ColorText.text = textstring as? String
}

但是,以这种方式使用 NSTimer(在 1.5 秒等短时间内触发)可能会变得不准确。定时器触发20次后,过去的时间将大于30秒。如果准确性很重要,您最好将第二个计时器设置为 30 秒。如果按下按钮,则 30 秒计时器无效;如果 30 秒计时器触发,则 1.5 秒计时器无效。

关于ios - 如何用另一个 NSTimer 来停止 NSTimer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34549166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com