Was Sie tun, ist, dass Sie außerhalb des Blocks einfach aktiviert / deaktiviert werden. Dies ist falsch, es wird ausgeführt, sobald diese Methode aufgerufen wird, wodurch die Schaltfläche nicht deaktiviert wird, bis der Completion-Block aufgerufen wird. Stattdessen sollten Sie es wieder aktivieren, sobald Ihre Animation abgeschlossen ist.
%Vor% Oh und ja, anstatt true
und false
, YES
und NO
würde gut aussehen. :)
In meinem Fall war isEnabled
nicht schnell genug, um mehrere Taps zu verhindern. Ich musste eine Eigenschaft und eine Wache verwenden, um mehrere Taps zu verhindern. Und die Aktionsmethode ruft einen Delegaten auf, der normalerweise den View-Controller ablehnt, aber mit mehreren Tastendrücken, die er nicht abgewiesen hat. dismiss(...)
muss sich selbst abbrechen, wenn Code noch auf dem View-Controller ausgeführt wird, nicht sicher. Unabhängig davon musste ich ein manuelles dismiss
im Wächter hinzufügen.
Hier ist meine Lösung ...
%Vor% Anstatt die UIView-Animation zu verwenden, habe ich mich entschieden, die Klasse Timer
zu verwenden, um die Schaltfläche nach einem Zeitintervall zu aktivieren. Hier ist die Antwort mit Swift 4: