我正在制作一个应用程序,当您按下按钮时,我需要运行一些功能。我还没有任何错误,当你按下按钮时什么也没有发生
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet var Background: UIView!
@IBOutlet weak var RedOverlay: UIView!
@IBOutlet weak var Text: UILabel!
var timer = Timer()
var seconds = 3
var timerRunning = false
@IBAction func screenPressed(_ sender: Any) {
func runTimer() {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(ViewController.updateTimer)), userInfo: nil, repeats: true)
timerRunning = true
}
}
@objc func updateTimer() {
seconds -= 1
Text.text = String(seconds)
if seconds < 2 {
timer.invalidate()
UILabel.animate(withDuration: 0.5, animations: {
self.Text.alpha = 0
})
backgroundChange()
}
}
func backgroundChange() {
let wait = Int.random(in: 1 ... 10)
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(wait), execute: {
self.Text.alpha = 1
self.Text.text = "Go"
self.RedOverlay.alpha = 1
})
}
}
我使用 Storyboard,因此该功能通过 socket 连接到按钮
最佳答案
您正在 IBAction 中定义您的函数。
移动你的
func Runtimer() { ... }
在它的外部并从内部调用它:
@IBAction func screenPressed(_ sender: Any) {
runTimer()
}
关于swift - 在按钮操作下声明的函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461068/