按下(应答)按钮时,swift / Xcode中的延迟动作

时间:2017-09-07 17:50:54

标签: ios swift

我有一个我已经开发的ios 10的测验应用程序,但我对编码很新。

在应用程序中,问题循环显示,您选择答案,然后在正确的答案按钮上显示颜色,并转到下一个问题,您必须按下另一个按钮。 我希望下一个问题在按下上一个答案1秒后自动出现。我该怎么做呢?

这是我目前的代码

func answerButtonHandler(_ sender: RoundedButton) {
    timer.invalidate()
    if sender.titleLabel?.text == currentQuestion.correctAnswer {
        score += 1
        questionLabel.text = currentQuestion.correctAnswer
        questionButton.isEnabled = true
    } else {
        sender.backgroundColor = flatRed
        questionLabel.text = currentQuestion.correctAnswer
        questionButton.isEnabled = true

    }
    for button in answerButtons {
        button.isEnabled = false
        if button.titleLabel?.text == currentQuestion.correctAnswer {
            button.backgroundColor = flatGreen
        }
    }
}

提前感谢您提供的任何指导。

3 个答案:

答案 0 :(得分:1)

这可以使用以下代码在IOS中使用 Grand Central Dispatch

Swift 3

let delay : Double = 1.0 
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay) {

    // in here you can perform a code with delay

}

Swift 2

let seconds = 1.0
let delay = seconds * Double(NSEC_PER_SEC)
let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))

dispatch_after(dispatchTime, dispatch_get_main_queue(), {

   // in here you can perform a code with delay

})

您可以使用this了解详情。

答案 1 :(得分:0)

Timer.scheduledTimer(
           timeInterval: 1.0,
           target: self,
           selector: #selector(myFunc),
           userInfo: ["callback" : onSuccess],
           repeats: false)

下次再询问之前......

答案 2 :(得分:0)

您可以将计时器设置为10秒,例如:

var counter = 10

var _ = Timer.scheduledTimer(timeInterval: 0.75, target: self, selector: #selector(updateCounter), userInfo: nil, repeats: true)

func updateCounter () {
   if counter > 0 {
     counter -= 1
   } else {
        //Do something
}