2016-08-15 6 views
0

Ich habe eine gute Menge von Berechnungscodes ausgeführt, wenn die UIButton gedrückt wird. Aber wenn die Taste gedrückt wird, bleibt die gesamte Ansicht stecken und die Schaltfläche bleibt markiert, bis die Berechnung beendet ist. Zum Beispiel setze ich eine Ladeansicht .hidden = false, wenn die Taste auch gedrückt wird, aber die Ladeansicht wird während der Berechnung nicht angezeigt.Gesamte Ansicht blockiert, wenn UIButton gedrückt wird

Gibt es eine Möglichkeit, das zu beheben?

Vielen Dank im Voraus!

+1

Beitrag einige Code, so dass wir versuchen können, – Carpsen90

+2

Multithreading ist der Schlüssel für die reibungslose UX zu helfen. Einfach die Berechnung nicht in den Hauptthread einfügen. Sobald die "UIButton" -Taste gedrückt wird, zeigen Sie einen Ladedialog an, starten Sie einen anderen Thread zum Berechnen und entfernen Sie den Ladedialog, sobald die Berechnung abgeschlossen ist. – Raptor

Antwort

3

Sie sollten die Dinge im Hintergrund von den Updates, die Sie auf der Benutzeroberfläche ausgeführt werden soll zu tun haben:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
    // do your task 

    dispatch_async(dispatch_get_main_queue()) { 
     // update some UI 
    } 
} 
+0

setze ich das in die Tastenaktion? –

+0

ja, du solltest –

+0

danke! es funktioniert jetzt, aber Nähte wie die Zeit der Berechnung ist mehr als üblich? Es ist normal? –

Verwandte Themen