iOS 응용 (SwiftUI)
[iOS - SwiftUI] gesture, simultaneousGesture 동작 개념 (SwiftUI 제스처의 특성)
jake-kim
2025. 1. 16. 01:55
gesture 동작 개념
- gesture는 거의다 아는 것이지만, 특성이 존재
- gesture가 즉각 이벤트가 감지되지 않고 일정 시간 0.3초 정도의 딜레이를 두고 그동안 입력된 이벤트를 총괄하여 어떤 제스처인지 파악
- 만약 2번 탭 제스쳐와, 1번 탭 제스쳐가 같이 등록되어 있다면
ex) 2번 탭 제스쳐와, 1번 탭 제스쳐가 같이 등록된 케이스
- gesture는 일정 딜레이를 두고 감지되므로, 2번 탭했을 때 첫번째 탭에 바로 1중 탭 제스쳐가 감지되지 않고 2중 탭 제스쳐가 감지됨
- 빠르게 2번 탭하면 2중 탭 이벤트만 감지되고, 1번만 탭하면 1중 탭 이벤트만 감지
.gesture(TapGesture(count: 2).onEnded {
message = "Tap twice!"
boxColor = .orange
})
.gesture(TapGesture().onEnded {
message = "Tap"
boxColor = .cyan
})
simultaneousGesture 란?
- 일반 gesture는 0.3초의 딜레이를 두고 이벤트를 감지 했지만, simultaneousGesture는 딜레이 없이 바로 제스처를 감지함
ex) simultaneousGesture로 두 개가 등록된 상태
.simultaneousGesture(TapGesture(count: 2).onEnded {
message = "Tap twice!"
boxColor = .orange
})
.simultaneousGesture(TapGesture().onEnded {
message = "Tap"
boxColor = .cyan
})
결론
- gesture는 내부적으로 debounce를 두고 시간이 지난 다음에 주어진 인풋들을 대상으로 제스처를 감지
- simultaneousGesture는 인풋이 들어오면 제스처를 곧바로 감지
* 참고
- https://developer.apple.com/documentation/swiftui/simultaneousgesture