Ich habe eine Schaltfläche in SwiftUI und möchte eine andere Aktion für "Tippen auf die Schaltfläche" (normales Klicken / Tippen) und "Langes Drücken" ausführen können.
Ist das in SwiftUI möglich?
Hier ist der einfache Code für die Schaltfläche, die ich jetzt habe (behandelt nur den "normalen" Tap / Touch-Fall).
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
} .disabled(self.BLEinfo.isScanning)
Ich habe bereits versucht, eine "longPress-Geste" hinzuzufügen, aber sie "führt" immer noch nur den "normalen / kurzen" Klick aus. Dies war der Code, den ich ausprobiert habe:
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
.fontWeight(.regular)
.font(.body)
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
}
Vielen Dank!
Gerard
button
swiftui
long-press
Gerard
quelle
quelle
onLongPressGesture()
before verwenden,onTapGesture()
wird letzteres ignoriert.action
Ich habe gerade festgestellt, dass der Effekt von der Reihenfolge der Implementierung abhängt. Durch die Implementierung der Erkennung von Gesten in der folgenden Reihenfolge scheint es möglich zu sein, alle drei Gesten zu erkennen und zu identifizieren:
Getestet auf Xcode Version 11.3.1 (11C504)
quelle
Dies wird nicht getestet, aber Sie können versuchen
LongPressGesture
, Ihrer Schaltfläche eine hinzuzufügen .Es wird vermutlich so aussehen.
quelle