Как получить uitextfield для обратного отсчета от минуты и секунды - PullRequest
0 голосов
/ 23 декабря 2019

Мой быстрый код ниже может занять секунды и обратный отсчет от того, что помещено в текстовое поле. Я хочу, чтобы пользователь мог ввести 5:30 и иметь этот обратный отсчет 330 секунд. Прямо сейчас для пользователя, чтобы сделать это, я должен был бы написать 330 секунд вместо 5:30.

   import UIKit

   class ViewController: UIViewController {

var enterTime = UITextField()
var lblTime = UILabel()
var startBTN = UIButton()
var timer = Timer()
var counter = 0

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    [enterTime,lblTime,startBTN].forEach{
        $0.backgroundColor = .systemRed
        view.addSubview($0)
        $0.translatesAutoresizingMaskIntoConstraints = false
    }

    enterTime.frame = CGRect(x: view.center.x-115, y: view.center.y-200, width: 60, height: 50)
    lblTime.frame = CGRect(x: view.center.x-115, y: view.center.y, width: 60, height: 50)
    startBTN.frame = CGRect(x: view.center.x-115, y: view.center.y+200, width: 60, height: 50)

    startBTN.addTarget(self, action: #selector(startHit), for: .touchDown)

    enterTime.placeholder = String("MM:SS")


}



@objc func startHit() {
    timer.invalidate()
    if let counterText = enterTime.text, let counterValue = Int(counterText) {
        counter = counterValue
        lblTime.text = String(counter)
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
    }
}

@objc func timerAction() {
    counter -= 1
    lblTime.text = String(counter)
    if ( counter == 0 ) {
        timer.invalidate()
    }
}

}

...