SwiftUI にボタンがあり、「ボタンをタップ」(通常のクリック/タップ)と「長押し」に異なるアクションを設定できるようにしたいと考えています。
SwiftUI でそれは可能ですか?
以下は、現在使用しているボタンの簡単なコードです (「通常の」タップ/タッチのケースのみを処理します)。
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
} .disabled(self.BLEinfo.isScanning)
すでに「longPress ジェスチャ」を追加しようとしましたが、それでも「通常/短い」クリックのみが「実行」されます。私が試したコードは次のとおりです。
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
.fontWeight(.regular)
.font(.body)
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
}
ありがとう!
ジェラルド
ベストアンサー1
いろいろ試してみましたが、最終的には次のようになりました:
Button(action: {
}) {
VStack {
Image(self.imageName)
.resizable()
.onTapGesture {
self.action(false)
}
.onLongPressGesture(minimumDuration: 0.1) {
self.action(true)
}
}
}
依然として効果のあるボタンですが、短押しと長押しが異なります。