개발하자 중엽아
  • [TS] CollectionView.rx.itemSelected가 먹통이 된 이유
    2025년 02월 09일 11시 27분 32초에 업로드 된 글입니다.
    이 글은 2025년 02월 09일 02시 40분 52초에 마지막으로 수정되었습니다.
    작성자: 이중엽

    개요

    특정 상황에서 CollectionView.rx.itemSelected가 동작하지 않는다.

    원인

    커스터마이징한 RootView와 RootViewController를 상속받아 사용하는데, 여기서 나는 해당 뷰에 대한 터치 이벤트를 항상 추가해주기 위해서 view에 tapGesture를 설정했다.
    이를 상속받은 하위 Custom View와 ViewController에서 tapGesture에 대한 이벤트를 어떻게 처리할지만 정하면 되기 때문에 편리하다.
    문제는 tapGesture에 cancelsTouchesInView라는 프로퍼티가 존재한다.

    기본 값은 true이고, 제스처가 인식되면 보류되었던 다른 터치 이벤트들은 전달되지 않고 touchesCancelled 메서드로 메시지가 전달된다고 한다.

    즉 설정한 tapGesture의 제스처만 인식되고 다른 제스처는 가볍게 무시해버리는다는 뜻이다.
    그래서 ItemSelected에 대한 인식도 전달되지 않고 취소되고 있었다.

    해결

    cancelsTouchesInView를 false로 바꾸어 다른 제스처에 대한 이벤트를 수신할 수 있도록 변경해주었다.

    댓글