Der Antwort von @nneonneo zufolge wird die Verwendung von NSTimer
vorgeschlagen, aber es wurde nicht gezeigt, wie es gemacht wird. Hier ist die grundlegende Syntax:
let delay = 0.5 // Zeit in Sekunden
NSTimer.scheduledTimerWithTimeInterval(delay, target: self, selector: #selector(myFunctionName), userInfo: nil, repeats: false)
Hier ist ein sehr einfaches Projekt, das zeigt, wie es verwendet werden könnte. Wenn eine Schaltfläche gedrückt wird, startet sie einen Timer, der nach einer Verzögerung von einer halben Sekunde eine Funktion aufruft.
import UIKit
class ViewController: UIViewController {
var timer = NSTimer()
let delay = 0.5
// Timer starten, wenn die Schaltfläche gedrückt wird
@IBAction func startTimerButtonTapped(sender: UIButton) {
// Timer abbrechen, falls die Schaltfläche mehrmals gedrückt wird
timer.invalidate()
// Timer starten
timer = NSTimer.scheduledTimerWithTimeInterval(delay, target: self, selector: #selector(delayedAction), userInfo: nil, repeats: false)
}
// Funktion, die nach der Verzögerung aufgerufen werden soll
func delayedAction() {
print("Aktion wurde gestartet")
}
}
Die Verwendung von dispatch_time
(wie in der Antwort von Palle) ist eine weitere gültige Option. Allerdings ist es schwer abzubrechen. Mit NSTimer
reicht es aus, um ein verzögertes Ereignis vor seinem Eintreten abzubrechen, einfach
timer.invalidate()
Die Verwendung von sleep
wird nicht empfohlen, insbesondere nicht auf dem Hauptthread, da es die gesamte Arbeit auf dem Thread stoppt.
Siehe hier für meine ausführlichere Antwort.