When the interaction emits its animation event on the core animation channel, the info will be propagated to the first property and then the second. Both will add an animation with a CATransaction using the provided completion handler. Because these are two individual animations, each completion handler will be invoked individually, causing the interaction's completion handler to be invoked twice.
In practice this won't be particularly noticeable because the timings for both animations should be similar, but there is a chance that this could cause an interaction to be marked as completed before all animations have, in fact, completed.
A potential solution here is to create an intermediary counting completion handler that supports being added to multiple transactions. This handler would propagate up to the original handler once all known animations have completed.
Scenario:
When the interaction emits its animation event on the core animation channel, the info will be propagated to the first property and then the second. Both will add an animation with a CATransaction using the provided completion handler. Because these are two individual animations, each completion handler will be invoked individually, causing the interaction's completion handler to be invoked twice.
In practice this won't be particularly noticeable because the timings for both animations should be similar, but there is a chance that this could cause an interaction to be marked as completed before all animations have, in fact, completed.
A potential solution here is to create an intermediary counting completion handler that supports being added to multiple transactions. This handler would propagate up to the original handler once all known animations have completed.