J'ai un bouton dans SwiftUI et je voudrais pouvoir avoir une action différente pour "tap button" (clic / tap normal) et "appui long".
Est-ce possible dans SwiftUI?
Voici le code simple du bouton que j'ai maintenant (ne gère que le boîtier tactile / tactile "normal").
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
} .disabled(self.BLEinfo.isScanning)
J'ai déjà essayé d'ajouter un "geste longPress" mais il "exécute" toujours le clic "normal / court". Voici le code que j'ai essayé:
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
.fontWeight(.regular)
.font(.body)
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
}
Merci!
Gérard
button
swiftui
long-press
Gérard
la source
la source
onLongPressGesture()
avantonTapGesture()
ignorera ce dernier.action
Je viens de découvrir que l'effet dépend de l'ordre de l'implémentation. En mettant en œuvre la détection des gestes dans l'ordre suivant, il semble possible de détecter et d'identifier les trois gestes:
Testé sur Xcode version 11.3.1 (11C504)
la source
Ce n'est pas testé, mais vous pouvez essayer d'ajouter un
LongPressGesture
à votre bouton.Cela ressemblera probablement à quelque chose comme ça.
la source