如果是真的话,迅速延迟

时间:2018-03-15 19:32:22

标签: swift if-statement delay sleep

我目前正在学习Swift,无法继续学习。我创建了一个骰子游戏。如果“if query”为true,则程序应在可能的新查询之前暂停。

@IBAction func guess(_ sender: Any) {
    let diceRoll = arc4random_uniform(5)
    let fingerErgebnis = diceRoll + 1
    let fingerAntwort = String(fingerErgebnis)

    if fingerTextfield.text == fingerAntwort{
        ergebnis.text = "Richtig erraten!"
        ergebnis.textColor = UIColor.green
        ergebnis.font = ergebnis.font.withSize(20)
        bild.image = UIImage(named: ("win.jpg"))
        button.setTitle("Neues Spiel!", for: .normal)
        fingerTextfield.text = " "
        sleep (2)



    }else if fingerErgebnis == 1 {
        ergebnis.text = "Leider falsch! Die Zahl war \(fingerAntwort)."
        ergebnis.textColor = UIColor.red
        bild.image = UIImage(named: ("finger1.jpg"))
        button.setTitle("Versuch es nochmal!", for: .normal)

    } ...

就一切正常而言,但我希望一切都先运行,我必须等待2秒,直到我再次点击该按钮。首先暂停我的测试,然后执行其余的if命令。我想要反过来。

对不起我可怕的英语;)

2 个答案:

答案 0 :(得分:0)

您可以使用async(deadline:execute:)禁用按钮并在两秒后重新启用它。因此,而不是sleep(2)放置以下内容:

button.isUserInteractionEnabled = false
DispatchQueue.main.asyncAfter(deadline: .now() + 2) { [weak self] in
  // assuming button is a property of the current view controller
  self?.button.isUserInteractionEnabled = true
}

答案 1 :(得分:0)

   sleep (2)

这是创建您正在寻找的延迟的错误方法。 sleep()完全停止你的进程,至少在那个线程上。你应该做的是禁用按钮,然后使用Timer(或其他形式的延迟执行,但Timer很容易)在两秒钟后重新启用它。