Mam przycisk w SwiftUI i chciałbym mieć możliwość wykonania innej akcji dla „przycisku stuknięcia” (normalne kliknięcie / stuknięcie) i „długiego naciśnięcia”.
Czy jest to możliwe w SwiftUI?
Oto prosty kod dla przycisku, który mam teraz (obsługuje tylko „normalną” obudowę typu dotknij / dotknij).
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
} .disabled(self.BLEinfo.isScanning)
Próbowałem już dodać „gest długiego naciśnięcia”, ale nadal „wykonuje” tylko kliknięcie „normalne / krótkie”. To był kod, który próbowałem:
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
.fontWeight(.regular)
.font(.body)
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
}
Dzięki!
Gerard
button
swiftui
long-press
Gerard
źródło
źródło
onLongPressGesture()
przedtemonTapGesture()
zignoruje ten drugi.action
Właśnie odkryłem, że efekt zależy od kolejności wdrożenia. Wdrożenie wykrywania gestów w następującej kolejności wydaje się możliwe do wykrycia i zidentyfikowania wszystkich trzech gestów:
Testowane na Xcode w wersji 11.3.1 (11C504)
źródło
To nie jest testowane, ale możesz spróbować dodać a
LongPressGesture
do swojego przycisku.Przypuszczalnie będzie to wyglądać mniej więcej tak.
źródło