반응형
Hacking with Swift 사이트의 강좌 번역본입니다.
[원문 : https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-a-gesture-recognizer-to-a-view]
How to add a gesture recognizer to a view
모든 SwiftUI 뷰는 제스쳐 인식을 붙일수 있고, 해당 제스쳐 인식은 인식이 활성화될때 실행될 클로져를 붙일 수 있습니다.
작업해야 할 몇가지 제스쳐 인식이 있고, 시작하는데 도움이 되는 몇가지 코드 샘플을 제공할 것입니다 - 어떻게 비슷한지 보게 될 것입니다.
우선, TapGesture입니다. 이것을 만들때 제스쳐를 시작하는데 얼마나 탭을 눌러야 하는지 지정할 수 있고, 제스쳐가 발생할때 실행할 onEnded 클로져를 붙입니다. 예를들어, 탭할때마다 커지는 이미지를 만듭니다.
struct ContentView: View {
@State private var scale: CGFloat = 1.0
var body: some View {
Image("example-image")
.scaleEffect(scale)
.gesture(
TapGesture()
.onEnded { _ in
self.scale += 0.1
}
)
}
}
두번째, 사용자가 지정한 시간만큼 뷰를 누르고 있을때 LongPressGesture 인식합니다. 최소 2초를 누르고 있을때 메시지를 출력하는 이미지 뷰를 만듭니다.
Image("example-image")
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
마지막으로, 사용자가 뷰를 누르고 특정 거리만큼 이동시킬때 DragGesture를 시작합니다. 최소 50 포인트를 이동시킬때 드래그 제스쳐를 시작하는 이미지를 만듭니다.
Image("example-image")
.gesture(
DragGesture(minimumDistance: 50)
.onEnded { _ in
print("Dragged!")
}
)
반응형
'SwiftUI > Responding to events' 카테고리의 다른 글
How to disable taps for a view using allowsHitTesting() (0) | 2019.11.19 |
---|---|
How to hide the label of a Picker, Stepper, Toggle, and more using labelsHidden() (0) | 2019.11.19 |
How to respond to view lifecycle events: onAppear and onDisappear (0) | 2019.11.19 |
How to control the tappable area of a view using contentShape() (0) | 2019.11.19 |
How to read tap and double-tap gestures (0) | 2019.11.19 |
How to create a stepper and read values from it (0) | 2019.11.19 |
How to create a segmented control and read values from it (0) | 2019.11.19 |
How to create a date picker and read values from it (0) | 2019.11.19 |