У меня есть кнопка в SwiftUI, и я хотел бы иметь возможность выполнять различные действия для «нажатия кнопки» (обычное нажатие / нажатие) и «долгое нажатие».
Это возможно в SwiftUI?
Вот простой код для кнопки, которую я имею сейчас (обрабатывает только «нормальный» случай касания / касания).
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
} .disabled(self.BLEinfo.isScanning)
Я уже пытался добавить «жест longPress», но он все еще только «выполняет» обычный / короткий щелчок. Это был код, который я попробовал:
Button(action: {self.BLEinfo.startScan() }) {
Text("Scan")
.fontWeight(.regular)
.font(.body)
.gesture(
LongPressGesture(minimumDuration: 2)
.onEnded { _ in
print("Pressed!")
}
)
}
Спасибо!
Gerard
button
swiftui
long-press
Gerard
источник
источник
onLongPressGesture()
beforeonTapGesture()
проигнорирует последнее.action
Я только что обнаружил, что эффект зависит от порядка реализации. Реализуя обнаружение жестов в следующем порядке, представляется возможным обнаружить и идентифицировать все три жеста:
Протестировано на Xcode версии 11.3.1 (11C504)
источник
Это не проверено, но вы можете попробовать добавить
LongPressGesture
к своей кнопке.Предположительно это будет выглядеть примерно так.
источник