Tengo un botón en SwiftUI y me gustaría poder tener una acción diferente para "botón de toque" (clic / toque normal) y "pulsación larga".
¿Es eso posible en SwiftUI?
Aquí está el código simple para el botón que tengo ahora (maneja solo el caso de toque / toque "normal").
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
} .disabled(self.BLEinfo.isScanning)
Ya traté de agregar un "gesto de LongPress" pero todavía solo "ejecuta" el clic "normal / corto". Este fue el código que probé:
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
.fontWeight(.regular)
.font(.body)
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
}
¡Gracias!
Gerard
button
swiftui
long-press
Gerard
fuente
fuente
onLongPressGesture()
antesonTapGesture()
ignorará el último.action
Acabo de descubrir que el efecto depende del orden de implementación. Al implementar la detección de gestos en el siguiente orden, parece posible detectar e identificar los tres gestos:
Probado en Xcode versión 11.3.1 (11C504)
fuente
Esto no se ha probado, pero puede intentar agregar un
LongPressGesture
botón a su botón.Presumiblemente se verá algo así.
fuente