我坚持让它进入正确的范围。我确信它的东西非常简单,但是我正用它碰撞墙壁。我发现的任何答案都在swift的早期版本中,所以我很难理解如何解决这个问题
我目前的问题是尝试正确初始化计时器并计数。 “选择器”导致了大多数问题。其余的我肯定不能事后弄清楚
代码如下。
@IBOutlet weak var shortTimerLabel: UILabel!
@IBOutlet weak var longTimerLabel: UILabel!
var seconds = 60 //This variable will hold a starting value of seconds. It could be any amount above 0.
var timer = Timer()
var isTimerRunning = false //This will be used to make sure only one timer is created at a time.
@IBAction func longpressed(_ gestureRecognizer: UILongPressGestureRecognizer) {
shortTimerLabel.text = "longPressed"
}
@IBAction func tappedShortTimer(_ gestureRecognizer: UITapGestureRecognizer) {
shortTimerLabel.text = "ShortPressed"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
func runTimer() {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTimer), userInfo: nil, repeats: true)
}
func updateTimer() {
seconds += 1 //This will decrement(count down)the seconds.
shortTimerLabel.text = "\(seconds)" //This will update the label.
}
}
我试图创建一个可以使用手势控制的秒表。短按标签表示停止/启动,长按表示重置时间。
答案 0 :(得分:1)
在updateTimer()
方法中,第一行应改为seconds -= 1
(如果您想倒计时)。
此外,您可能希望更新updateTimer()
方法,如下所示:
func updateTimer() {
seconds -= 1
if seconds == 0 {
timer.invalidate()
isTimerRunning = false
}
shortTimerLabel.text = String(describing: seconds)
}
此处的另一个问题是您将runTimer()
和updateTimer()
方法添加到了错误的位置。您不应该在<{1}}方法中添加 。
您的最终代码如下所示:
viewDidLoad
答案 1 :(得分:1)
#selector(ViewController.updateTimer)
viewDidLoad
但在longpressed
功能timer.invalidate()