Animate 진행 도중에 버튼 안 눌리는 현상

안녕하세요,

요런 알림창을 만들고 있습니다. (위 사진 gif입니당)

[위에서 내려옴 → 2초 머묾 → 다시 위로 올라감] 순서로 애니메이션이 작동하는 코드를 짜봤어요.

코드는 이렇습니다.

그리고 2초를 안 기다리고 더 빨리 알림창을 끌 수 있도록, 알림창 안에다 x 버튼을 만들었습니다. 버튼을 누르면 2초 딜레이 없이 올라가게끔

이렇게 액션 코드를 넣었고요.

###그리고 문제가 생겼는데,
알림창 애니메이션이 동작하는 도중, 그러니까 [위에서 내려옴 → 2초 머묾 → 다시 위로 올라감] 이 과정이 끝날 때까지 x 버튼이 눌리지 않습니다. print도 찍어봤는데 버튼 액션 내부에 있는 애니메이션 코드가 틀리고 맞고를 떠나서 버튼이… 그냥 동작 자체를 안 하는 것 같더라고요.
구글링을 해보다가 혹시 몰라 animate option으로 allowUserInteraction을 넣어보기도 했는데 효과는 없었습니다.

###여기서 궁금한 점이,

  1. 이렇게 animate 도중에는 button action이 안 동작하는 이유가 무엇일까요? 그리고 정상적으로 동작하게 할 수 있는 방법이 있을까요?
  2. 스샷 코드의 질이 어떤지 알고 싶습니다. 되게 짧긴 하지만… 애니메이션을 많이 다뤄보지 않아서 이런 식으로 코드를 짜는 게 맞는 건지 고민이 들어서 여쭤보고 싶습니다ㅏ
좋아요 1

애니메이션 중에는 애니메이션되는 뷰에 대한 userinteraction이 일시적으로 비활성화 됩니다. iOS5부터 전체 애플리케이션에 대해 userinteraction이 비활성화되었습니다.

자세한건 아래의 링크 참고해보세요!

좋아요 1

아마도 이 문제는 Core Animation 까지 가야 해결이 가능할 듯 한데요,

CALayer 를 알고 있다는 전제하에 답변을 드리면,
애니메이션을 하는 순간 Layer는 Model Layer와 Presentation Layer로 나뉩니다.

우리가 보는 건 움직이는 Presentation Layer 이고 이벤트를 받는 건 Model Layer 이죠.
움직이는 버튼은 허깨비인 거고, 이벤트를 받는 알맹이는 여전이 원래 자리에 있는거예요.

원래 창 닫는 버튼이 있던 자리를 눌러보세요. (될까???)

스샷 코드의 퀄리티는… 되게 짧아서 조언을 주기가 어려운데, 스샷만으로는 문제 될 부분은 없어보이네요.