SwiftUIのonTapGestureでタップを検知する領域を画面全体にするのに手こずりました。
あまりしっくりきていないのですが、一応画面全体でタップを検知する事のできるコードが書けたので、それを残します。
タップできる目次
SwiftUIのonTapGestureのタップ検知領域を画面全体にする
結論から言うと、画面全体を覆うサイズでviewを1つ配置して、それにonTapGestureを設定します。
実際の画面
実際のコード
import SwiftUI
struct ContentView: View {
@State var f: Bool
init(){
self.f = true
}
var body: some View {
ZStack {
if f {
Color.blue
} else {
Color.white
}
}
.onTapGesture {
if f {
f = false
} else {
f = true
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
実際のコード解説
ZStackが画面全体を覆うviewです。
今回はプレビューが分かりやすいようにColorを設定しています。
Colorの値はフラグで判定しています。
onTapGestureでは、その時のColorでフラグの値を変更しています。