Gibt es eine einfache Möglichkeit, einen Methodenaufruf um 1 Sekunde zu verzögern?
Ich habe eine UIImageView
, die auf ein Berührungsereignis reagiert. Wenn die Berührung erkannt wird, werden einige Animationen in der App ausgeführt. Nach einer Sekunde möchte ich eine andere Methode aufrufen. In diesem Fall kann ich den animationDidStop
Selektor nicht verwenden .
ios
objective-c
iphone
cocoa-touch
uikit
Vielen Dank
quelle
quelle
Antworten:
Dokumentverweis
quelle
Sie können auch einen Block verwenden
Meistens möchten Sie dispatch_get_main_queue verwenden. Wenn die Methode jedoch keine Benutzeroberfläche enthält, können Sie eine globale Warteschlange verwenden .
Bearbeiten:
Swift 3 Version:
Ebenso
DispatchQueue.global().asyncAfter(...
könnte auch eine gute Option sein.quelle
dispatch_after
und drücken Sie die Eingabetastedispatch_after
, ist dies eine sehr einfache Möglichkeit, dies zu tun. Außerdem können Sie Eigenschaften an die Methode übergeben, die Sie aufrufen, was großartig ist.Der beste Weg ist:
Sie können nil auch als withObject-Parameter übergeben.
Beispiel:
quelle
Es gibt bereits viele Antworten und alle sind richtig. Wenn Sie das verwenden möchten,
dispatch_after
sollten Sie nach dem Snippet suchen,Code Snippet Library
das rechts unten im enthalten ist (wo Sie dieUI
Elemente auswählen können ).Sie müssen dieses Snippet also nur aufrufen, indem Sie den Versand in Code schreiben :
quelle
Sie können den Perform-Selektor verwenden, nachdem die 0,1-Sekunden-Verzögerungsmethode den folgenden Code aufgerufen hat, um dies zu tun.
quelle
Du kannst auch:
In diesem Fall müssen Sie einige Änderungen an einer Ansicht vortäuschen, damit die Animation funktioniert. Es ist zwar hackig, aber ich liebe das blockbasierte Zeug. Oder schließen Sie die Antwort von @mcfedr unten ab.
quelle
Du kannst das
quelle
Swift 2.x.
Swift 3.x - & - Swift 4
oder pass a
escaping closure
quelle
Es gibt eine Swift 3-Lösung aus der überprüften Lösung:
Und da ist die Methode
quelle
Verwendung in Swift 3
quelle
HINWEIS: Dadurch wird Ihr gesamter Thread angehalten, nicht nur die eine Methode.
Rufen Sie 1000 ms lang an, um zu schlafen / warten / anhalten, bevor Sie Ihre Methode aufrufen?
Bearbeiten: Die obige Antwort gilt für die allgemeine Frage "Wie kann ich einen Methodenaufruf um 1 Sekunde verzögern?", Die zum Zeitpunkt der Antwort gestellt wurde (tatsächlich wurde die Antwort innerhalb von 7 Minuten nach der ursprünglichen Frage gegeben: - )). Zu dieser Zeit wurden keine Informationen über die Sprache gegeben. Hören Sie also bitte auf, sich über die richtige Art und Weise der Verwendung von Schlaf zu beschweren.
quelle