Timer Problem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Timer Problem

    Ich habe irgendwie ein Problem mit einem Timer, was ich gar nicht verstehe.

    Variablen für den Timer

    Quellcode

    1. var countDownTimer: Timer?
    2. var countdownzaehler = 0


    Start des Timers

    Quellcode

    1. countDownTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(countdown), userInfo: nil, repeats: true)

    Auswertung

    Quellcode

    1. @objc func countdown() {
    2. var countDown: Float = 0.00
    3. countdownzaehler += 1
    4. countDown = Float(countdownzaehler) / Float(spiellaenge)
    5. Outlet_CountDown.progress = countDown
    6. if (countdownzaehler > spiellaenge) {
    7. countdownzaehler = 0
    8. lives -= 1
    9. if lives==0 {
    10. countDownTimer?.invalidate()
    11. }
    12. }
    13. let spielzeit50P = Int(spiellaenge / 2)
    14. let spielzeit75P = Int(spiellaenge / 4 * 3)
    15. let spielzeit5v = Int(spiellaenge - 5)
    16. if countdownzaehler==1 {
    17. Outlet_CountDown.progressTintColor = UIColor.systemGreen
    18. }
    19. if countdownzaehler > spielzeit50P {
    20. Outlet_CountDown.progressTintColor = UIColor.systemYellow
    21. }
    22. if countdownzaehler > spielzeit75P {
    23. Outlet_CountDown.progressTintColor = UIColor.systemOrange
    24. }
    25. if countdownzaehler > spielzeit5v {
    26. Outlet_CountDown.progressTintColor = UIColor.systemRed
    27. }
    28. print(lives, countdownzaehler, countDown)
    29. }
    Alles anzeigen
    Während es läuft, wird der Timer gefühlt zweimal pro Sekunde aufgerufen.

    Und dann nach dem "countDown?.invalidate()" läuft der Timer weiter und ab da tatsächlich sekündlich.

    Was mache ich falsch und habe ich nicht verstanden?
  • Ich muss das Thema doch noch einmal aufmachen.

    Der Timer läuft jetzt wie gewünscht und die ProgressView Anzeige läuft auch.

    Aber wenn ich nun einen Button drücke, um ein Objekt zu bewegen, verschwindet der ProgressView solange bis keine Taste mehr gedrückt wird und wieder die nächste Sekunde dann rum ist.

    Der Timer wird weiter ausgeführt, aber eben die Anzeige nicht aktualisiert bzw. verschwindet beim Drücken des Buttons.