🪶
SwiftUIでテキストやImage(アイコン)をボタンにする
Tips💡
SwiftUIで、Textや Imageをタップしたときに、ボタンのように使う方法がないか調べていたらあった!
class modifierのonTapGesture
を使うと実現できるようだ。
using
オブジェクトに対して、class modifierをつけるだけ。同じ宣言的UIフレームワークのFlutterで表現するなら、GestureDetector
がある。
[example]
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
// ここから追加
.onTapGesture {
// この中に処理を書く
print("hi icchy")
}
Text("Hello, world!")
}
.padding()
}
}
#Preview {
ContentView()
}
ImageをTapすると、ログが表示されました🙌
感想
カスタマイズしたアイコンボタンを作って処理を書いてみたのですが、なぜか反応しなかった???
ボタンがなくても押すイベントが起きて、処理が実行されればやりたいことはできるので、onTapGesture
を使うことで、短いコードで簡単に処理を実行できる方法を実現できました。
Discussion