SwiftUIでは、タップなどのジェスチャに対して処理を行うためのモディファイアがいくつか用意されている。

今回はその中でもよく使われるonTapGestureモディファイアの使用例を紹介する。

シングルタップ時の処理

ここでは簡単な例として、Textビューのタップに合わせてImageビューの表示・非表示を切り替えるサンプルコードを紹介する。

struct ContentView: View {
  @State var showImage = false
  
  var body: some View {
    HStack {
      Text("Tap here")
        .onTapGesture {
          self.showImage.toggle()
      }
      
      if showImage {
        Image(systemName: "star")
      }
    }
  }
}

このコードを実行するとTextビューが表示され、タップすると隣にImageビューで指定したスターが表示される。

Textをタップ
もう一度Textをタップ
スターが消える

ダブルタップ時の処理

ダブルタップに限らず、トリプルタップなど複数回のタップに対して処理を追加することもできる。

onTapGestureモディファイアのcount引数にタップ回数を設定するだけでOK。

struct ContentView: View {
  @State var showImage = false
  
  var body: some View {
    HStack {
      Text("Double Tap here")
        .onTapGesture(count: 2) {
          self.showImage.toggle()
      }
      
      if showImage {
        Image(systemName: "star")
      }
    }
  }
}

先ほどと違ってシングルタップ時には何も起きないが、ダブルタップすると処理が走るようになっている。