Saya memiliki tombol di SwiftUI dan saya ingin dapat memiliki tindakan berbeda untuk "tombol ketuk" (klik / ketuk normal) dan "tekan lama".
Apakah itu mungkin di SwiftUI?
Berikut adalah kode sederhana untuk tombol yang saya miliki sekarang (hanya menangani case sentuh / sentuh "normal").
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
} .disabled(self.BLEinfo.isScanning)
Saya sudah mencoba menambahkan "longPress gesture" tetapi masih "mengeksekusi" klik "normal / pendek". Ini adalah kode yang saya coba:
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
.fontWeight(.regular)
.font(.body)
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
}
Terima kasih!
Gerard
button
swiftui
long-press
Gerard
sumber
sumber
onLongPressGesture()
sebelumnyaonTapGesture()
akan mengabaikan yang terakhir.action
Saya baru menemukan bahwa efeknya tergantung pada urutan pelaksanaannya. Menerapkan deteksi gerakan dalam urutan berikut ini tampaknya mungkin untuk mendeteksi dan mengidentifikasi ketiga gerakan:
Diuji pada Xcode Versi 11.3.1 (11C504)
sumber
Ini tidak diuji, tetapi Anda dapat mencoba menambahkan
LongPressGesture
ke tombol Anda.Agaknya akan terlihat seperti ini.
sumber