SwiftUI 에서 제공하는 DragGesture 를 비활성화하는 기능을 구현하기 위한 방법을 다룹니다
SwiftUI에서 if문은 View 빌더 내에서 사용될 때, 항상 View를 반환해야 합니다. 즉, gesture 메서드 안에서 if를 사용하는 것은 문법적으로 허용되지 않기 때문에, 이를 해결하려면 if 조건을 삼항 연산자(? :)나 조건부 뷰 빌더를 사용하여 처리해야 합니다.
다음은 삼항 연산자를 사용하여 만약 특정 값이 false 라면 Drag 동작을 허용하고 만약 true 라면 Drag 동작을 비활성화 시킵니다.
@State private var isTurning: (Bool, Bool) = (false,false)
...
.gesture(
isTurning.0 == false ?
DragGesture()
.onChanged { gesture in
if gesture.translation.width < offset.width && isTurning.1 == false {
isTurning.1 = true
} else if gesture.translation.width > offset.width && isTurning.1 == true {
isTurning.1 = false
}
offset = gesture.translation
dragPublisher.send(gesture.translation) // 드래그 이벤트를 발행
}
.onEnded { value in
offset = .zero
}
: nil
)
'SwiftUI' 카테고리의 다른 글
WidgetKit 에서 SwiftData 로 저장된 데이터 사용하기 (0) | 2024.10.22 |
---|---|
SwftUI - ShareLink 공유 기능 사용하기, 공유 인터페이스 (1) | 2024.10.22 |
프로그래머스 - 최댓값과 최솟값 (0) | 2024.10.10 |
WWDC 20 - Meet WidgetKit (위젯 도입) (19) | 2024.10.09 |
WidgetKit - 위젯 만들기 전에 알아둘 것들 (10) | 2024.10.07 |