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.actionAcabo 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
LongPressGesturebotón a su botón.Presumiblemente se verá algo así.
fuente