문제 상황

메인화면의 Card가 Swipe되고 나서 순간적으로 이전화면이 보이는 문제가 발생했습니다.

원인

현재, ViewModel에서의 Input은 아래와 같습니다.

struct Input {
    let musicCardDidChangeSwipe: AnyPublisher<CGFloat, Never>
    let musicCardDidFinishSwipe: AnyPublisher<CGFloat, Never>
    let likeButtonDidTap: AnyPublisher<Void, Never>
    let dislikeButtonDidTap: AnyPublisher<Void, Never>
}

와 같은 로직이 흘러갑니다.

카드를 애니메이션 처리하며 넘긴다. vs 다음 카드를 불러온다.

이 두개의 과정에서 화면을 보여주는 관점에서 충돌이 일어났습니다.

simulator_screenshot_14D6616E-EA43-42DB-8F75-31959CE5C6ED.png

<임계값을 넘어간 카드를 손에서 놓은 순간>

⇒ 애니메이션이 끝나기도 전에 현재 카드의 정보가 업데이트 되고 있다.

카드가 넘어가는 화면의 애니메이션과 별개로 currentMusicTrack와, nextMusicTrack의 값은 변경되고 있습니다.

→ 애니메이션이 끝나는 것을 기다려주지 않는다.