ジェスチャーとは?

SwiftUIのButtonやToggleビューには、タップされた時に処理が実行されるイベントがあります。
TextやImageには、こうしたイベントがありません。
イベントを持っていないビューにイベントを追加する機能を「ジェスチャー」と呼びます。
タップ
SwiftUIには、次のようなタップイベントを追加するジェスチャーが用意されています。
func onTapGesture ( count : Int, perform action : { }) -> some View
count : タップ回数
perform : 処理
countで指定した回数文タップされた時に、performで指定した処理を行います。
回数はデフォルトでは1で、2を設定することでダブルタップにすることも可能です。
var body: some View {
Text("タップ")
.onTapGesture(count: 1, perform: {
//処理
})
}
上記はテキストビューをタップした時に、イベントを起こす例です。
長押し

長押しには、次のようなジェスチャが用意されています。
func longPressGesture( minimumDuration : Double, maximumDistance : CGFloat ,
pressing : ((Bool) -> Void )? , perform action : @escaping () -> Void) -> som View
minimumDuration : 長押しと判別する最小時間
maximumDistance : 長押しの場所がどれだけずれても良いか
pressing : 押された時と離された時に行うクロージャ
perform : 長押しで行う処理
最初の2つは長押しを判定するための時間と距離の条件を指定します。
距離というのは、最初にタップした位置からどれだけずれても良いかです。
performで、長押しした時に行う処理を実行します。
Text("タップ")
.onLongPressGesture(minimumDuration: 3, maximumDistance: 5, perform: {
//処理
})
上記は、テキストに長押しのジェスチャをつけた例です。
その他のジェスチャ
その他にもジェスチャを細かく設定できる.gestureモディファイアやドラッグ時の処理を設定できるDragGestureなどがあります。
まとめ
ジェスチャーを使うことで、ビューにイベントを追加することが出来ます。
SwiftUIには、様々なイベントのジェスチャーが用意されています。
コメント