Я работаю над представлением SwiftUI, цель которого - позволить пользователю ввести сумму в долларах. Мне нужна строка из семи сборщиков в стиле колесика, каждое из значений которых представляет собой цифры от 0 до 9.
Следующий код работает, за исключением , который при попытке коснуться и перетащить цифруЧтобы прокрутить колонку, я обнаружил, что мой жест перетаскивания вызывает не тот Пикер, к которому я прикасаюсь, а прокрутку, несколько столбцов вправо. Другими словами, область перетаскивания для каждого средства выбора смещается немного левее того места, где на экране появляется сам столбец средства выбора.
Я пытался установить границы для видов, но все, кажется, в нужном месте. Любые идеи, что вызывает это или как это исправить?
import SwiftUI
struct CurrencyPickerView: View {
@State private var centsDigit: Int = 0
@State private var tenCentsDigit: Int = 0
@State private var onesDigit: Int = 0
@State private var tensDigit: Int = 0
@State private var hundredsDigit: Int = 0
@State private var thousandsDigit: Int = 0
@State private var tenThousandsDigit: Int = 0
var body: some View {
let pickerWidth = CGFloat(20)
return HStack {
Picker(selection: $tenThousandsDigit, label: EmptyView()) {
ForEach((0...9), id: \.self) { ix in
Text("\(ix)").tag(ix)
}
}.frame(width: pickerWidth)
Picker(selection: $thousandsDigit, label: EmptyView()) {
ForEach((0...9), id: \.self) { ix in
Text("\(ix)").tag(ix)
}
}.frame(width: pickerWidth)
Picker(selection: $hundredsDigit, label: EmptyView()) {
ForEach((0...9), id: \.self) { ix in
Text("\(ix)").tag(ix)
}
}.frame(width: pickerWidth)
Picker(selection: $tensDigit, label: EmptyView()) {
ForEach((0...9), id: \.self) { ix in
Text("\(ix)").tag(ix)
}
}.frame(width: pickerWidth)
Picker(selection: $onesDigit, label: EmptyView()) {
ForEach((0...9), id: \.self) { ix in
Text("\(ix)").tag(ix)
}
}.frame(width: pickerWidth)
Text(".")
Picker(selection: $tenCentsDigit, label: EmptyView()) {
ForEach((0...9), id: \.self) { ix in
Text("\(ix)").tag(ix)
}
}.frame(width: pickerWidth)
Picker(selection: $centsDigit, label: EmptyView()) {
ForEach((0...9), id: \.self) { ix in
Text("\(ix)").tag(ix)
}
}.frame(width: pickerWidth)
}
}
}