【发布时间】:2017-04-18 02:04:41
【问题描述】:
我正在使用 Swift 3 在 Xcode 中制作我的第一个应用程序,并且在制作计时器方面遇到了一些挑战。到目前为止,我有一个可以倒计时并且可以重置为预定义时间的应用程序。我的下一步是让用户使用单次向上滑动来调整开始时间以向计时器添加秒数,向下滑动以从计时器中删除秒数。
到目前为止我的代码:
import UIKit
class StopWatchViewController: UIViewController {
@IBOutlet weak var timerLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.timerLabel.text = timeString(time: TimeInterval(seconds))
}
var seconds = 180 //This is start time in seconds 180 = 3mins
var timer = Timer()
var isTimerRunning = false
func updateTimer() {
if seconds < 2 {
timer.invalidate()
self.timerLabel.text = "Stop!"
} else {
seconds -= 1
timerLabel.text = timeString(time: TimeInterval(seconds))
}
}
func runTimer() {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(StopWatchViewController.updateTimer)), userInfo: nil, repeats: true)
isTimerRunning = true
}
func singleTapped(_ sender: UITapGestureRecognizer) {
//Start Timer
if isTimerRunning == false {
runTimer()
}
}
func timeString(time:TimeInterval) -> String {
let minutes = Int(time) / 60 % 60
let seconds = Int(time) % 60
return String(format:"%02i:%02i", minutes, seconds)
}
func longPress(_ sender: UILongPressGestureRecognizer) {
//Pause
if isTimerRunning == true {
timer.invalidate()
isTimerRunning = false
}
}
func doubleTapped(_ sender: UITapGestureRecognizer) {
//Double Tap Reset
timer.invalidate()
seconds = 180
timerLabel.text = timeString(time: TimeInterval(seconds))
isTimerRunning = false
}
func addsecond() {
if isTimerRunning == false {
//timer plus second
timerLabel.text = timeString(time: TimeInterval(seconds)+1)
}
}
func singleSwipeUp(_ sender: UISwipeGestureRecognizer) {
//Add seconds using swipe up
timer.invalidate()
addsecond()
}
}
这可以用作具有预定义时间(3 分钟)的计时器,但它不允许用户使用上下滑动来调整时间。它目前只会在显示屏上增加一秒钟,但这不会在重新启动后立即影响未激活的计时器。我主要是在寻找 addsecond 函数的提示。
【问题讨论】: