Я сделал секундомер с помощью таймера в этом приложении и добавил кнопку старт-стоп, чтобы приостановить и воспроизвести то же самое.Когда нажата кнопка, она отправляется функции, которая делает недействительным таймер, и она должна остановиться. Но, как ни странно, достаточно нажать кнопку «Стоп» вместо того, чтобы таймер как-то ускорился. Я не изменил временной интервал, кроме одного раза, просто объявив его.
Я пытался отключитькнопку запуска, как только она нажата и даже скрыть ее.также пытался изменить временной интервал, но ничего не работает.Чем больше я нажимаю кнопку старт-стоп, тем больше она ускоряется и начинает двигаться намного быстрее, чем за указанный интервал времени.
startButton.frame = CGRect(x: 0, y: UIScreen.main.bounds.height * 0.9 , width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height * 0.1)
startButton.setTitle("Start Timer", for: .normal)
self.view.addSubview(startButton)
startButton.setTitleColor(.white , for: .normal)
startButton.backgroundColor = .red
startButton.addTarget(self, action: #selector(playButton(_:)), for: .allTouchEvents)
stopButton.frame = CGRect(x: 0, y: UIScreen.main.bounds.height * 0.9 , width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height * 0.1)
stopButton.setTitle("Stop Timer", for: .normal)
stopButton.setTitleColor(.white , for: .normal)
stopButton.backgroundColor = .red
stopButton.addTarget(self, action: #selector(pauseButton(_:)), for: .allTouchEvents)
@objc func playButton(_ sender : Any)
{
timer = Timer.scheduledTimer(timeInterval: 1, target: self , selector: #selector(updateTimer), userInfo: nil, repeats: true)
startButton.isEnabled = false
stopButton.isEnabled = true
isRunning = true
self.view.addSubview(stopButton)
startButton.isHidden = true
stopButton.isHidden = false
}
@objc func pauseButton(_ sender: Any) {
self.view.addSubview(startButton)
timer.invalidate()
stopButton.isHidden = true
startButton.isHidden = false
startButton.isEnabled = true
stopButton.isEnabled = false
isRunning = false
}
@objc func updateTimer(_ sender : Any)
{
counter += 0.1
titleLabel.text = String(format: "%.1f", counter)
}