【发布时间】:2015-12-31 16:40:51
【问题描述】:
注意:我在这个项目中使用 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 秒后更改文本之前未按下)。
附言。对不起,代码很长,我认为这是必要的。 :-)
【问题讨论】:
-
你想使用 NSNotifications。我会链接你苹果文档。基本上你必须设置你的类,我假设一个视图控制器,将它添加为通知的观察者,然后发送或“发布”该通知,如果计时器自最后一次按下按钮后倒计时这么多秒。 developer.apple.com/library/mac/documentation/Cocoa/Reference/… - 仔细阅读并确保在您的应用使用计时器完成后将自己移除为观察者。
-
我很抱歉@MatthewLawrenceBailey,但我不明白我将如何使用它来阻止其他 NSTimer?感谢您的耐心和帮助:-)