Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 按下(应答)按钮时swift/Xcode中的延迟动作_Ios_Swift - Fatal编程技术网

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

Ios 按下(应答)按钮时swift/Xcode中的延迟动作,ios,swift,Ios,Swift,我有一个ios 10的测验应用程序,我已经开发出来了,但我对编码还相当陌生 在应用程序中,问题循环出现,您选择一个答案,然后正确答案按钮上显示一种颜色,要进入下一个问题,您必须点击另一个按钮。 我希望下一个问题在按下上一个答案1秒后自动出现。我该怎么做呢 这是我目前的代码 func answerButtonHandler(_ sender: RoundedButton) { timer.invalidate() if sender.titleLabel?.text == curr

我有一个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
        }
    }
}
提前感谢您提供的任何指导

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

下一次在询问之前进行搜索…

您可以设置一个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
}

这可以通过使用以下代码在IOS中使用大中央调度来实现:

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

})

您可以通过。

了解更多信息。您可以随时使用计时器/n计时器启动代码块。感谢您的帮助。在进一步挖掘之后,我设法使您的代码在我的代码中工作。我搜索了一个多小时,在这个网站上,我只看到了一个我无法工作的帖子。很高兴它有帮助。谢谢你的回复!我无法让它工作(不确定在哪里正确输入),但我用另一个响应来管理它。谢谢你谢谢你的回复!我无法让它工作(不确定在哪里正确输入),但我用另一个响应来管理它。非常感谢。