Eu tenho um botão no SwiftUI e gostaria de poder executar uma ação diferente para "toque no botão" (clique / toque normal) e "pressione e segure".
Isso é possível no SwiftUI?
Aqui está o código simples para o botão que tenho agora (lida apenas com a caixa de toque / toque "normal").
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
} .disabled(self.BLEinfo.isScanning)
Eu já tentei adicionar um "gesto longPress", mas ele ainda apenas "executa" o clique "normal / curto". Este foi o código que tentei:
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
.fontWeight(.regular)
.font(.body)
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
}
Obrigado!
Gerard
button
swiftui
long-press
Gerard
fonte
fonte
onLongPressGesture()
antesonTapGesture()
ignorará o último.action
Acabei de descobrir que o efeito depende da ordem da implementação. Implementando a detecção de gestos na seguinte ordem, parece possível detectar e identificar os três gestos:
Testado no Xcode versão 11.3.1 (11C504)
fonte
Isso não foi testado, mas você pode tentar adicionar um
LongPressGesture
ao seu botão.Presumivelmente, será algo parecido com isto.
fonte