본문 바로가기
iOS/swift

[Swift] 이벤트 소비와 전파

by 23g 2025. 2. 20.

이벤트라 내가 받고싶은 이벤트 짤

 

이벤트 소비와 전파의 차이는 주로 이벤트 핸들러에서 true와 false 반환 값에 의해 결정됨.

  1. 이벤트 소비 (Event Consuming):
    • 이벤트 핸들러에서 true를 반환하면 이벤트가 더 이상 전파되지 않고 소비되었음을 의미함. 즉, 이후 다른 핸들러나 처리 로직으로 이벤트가 전달되지 않음.
    • 예: marker2.touchHandler에서 true를 반환하면, 마커 2 터치 이벤트 이후 지도 터치 이벤트로 전파되지 않음.
  2. 이벤트 전파 (Event Propagation):
    • 이벤트 핸들러에서 false를 반환하면 이벤트가 계속해서 전파되어 다른 핸들러나 처리 로직에서 처리될 수 있음.
    • 예: marker1.touchHandler에서 false를 반환하면, 마커 1 터치 이벤트가 처리된 후에도 mapView(_:didTapMap:)에서 지도 터치 이벤트로 전파됨.
marker.touchHandler = { (overlay) in
                if overlay is NMFMarker {
                    print("✅ 마커 터치 이벤트 발생: \(smokingArea.name)")
                    return true // 이벤트 소비 (false면 이벤트 전파)
                }
                return false
            }