1

我想看看我的程序知道计时器何时完成。我在 Xcode 7 Beta 3 (7A152u) 中使用 WKInterfaceTimer。当计数器倒计时时,“Tick Tock”会打印到控制台。但是当它达到 0 时,不会打印“Timer Done”。

    @IBOutlet var myTimer: WKInterfaceTimer!

    @IBAction func startButton() {
        myTimer.start()
        myTimer.setDate(NSDate(timeIntervalSinceNow: 4)) // Arbitrary 4 second coundown.

        // Impliment an alert.
        if myTimer == 0 {
            print("Timer Done")

        } else {
        print("Tick Tock")

    }
}
4

2 回答 2

1

这是我想出的解决方案。现在,计时器结束时的警报只是用“完成”打印到控制台。非常感谢用户 Prawn,因为我在这个解决方案中使用了他的一些代码。

import WatchKit
import Foundation

var myTimer : NSTimer?
var elapsedTime : NSTimeInterval = 0.0
var startTime = NSDate()
var duration : NSTimeInterval = 4.0 //Arbitrary 4 seconds to test timer.


class InterfaceController: WKInterfaceController {

override func awakeWithContext(context: AnyObject?) {
    super.awakeWithContext(context)
    WKTimer.setDate(NSDate(timeIntervalSinceNow: duration))

}


override func willActivate() {
    super.willActivate()

}

@IBOutlet var WKTimer: WKInterfaceTimer! //The WatchKit timer the user sees

@IBAction func startButton()  { //Start button

    NSTimer.scheduledTimerWithTimeInterval(duration, target: self, selector: ("timerDone"), userInfo: nil, repeats: false)
    WKTimer.setDate(NSDate(timeIntervalSinceNow: duration ))
    WKTimer.start()

}


//Reset button resets the timer back to the original time set.
@IBAction func resetButton() {
    WKTimer.stop()
    WKTimer.setDate(NSDate(timeIntervalSinceNow: duration))

}


func timerDone() {
    print("Done")

}


override func didDeactivate() {
    // This method is called when watch view controller is no longer visible
    super.didDeactivate()
}

}
于 2015-07-31T00:56:50.080 回答
0

你做的是错的。调用setDate计时器后开始倒计时。要了解计时器的实际状态,您应该实例化NSTimer并检查它何时触发。

来自Apple 的文档

要知道计时器何时达到 0,请使用与设置计时器相同的目标日期配置 NSTimer 对象。

于 2015-07-19T18:06:39.833 回答