我正在构建一个具有Picker
视图的SwiftUI应用。它嵌入在NavigationView
中,因此,当我点击Picker
的标题时,我将转到全屏选择视图以选择一个值。我只能通过点击Text
本身来选择一个,但是如果我在红色区域之外点击则什么也不会发生。
我想知道这是预期的行为还是某种错误?可以固定它吗,因此在该行的任何部分上点击都将被视为选择项吗? 代码如下:
var body: some View {
NavigationView {
Form {
Section {
TextField("Amount", text: $checkAmount)
.keyboardType(.decimalPad)
// !!!
// The picker is here
// !!!
Picker("Number of people", selection: $peopleIndex) {
ForEach(peopleRange) {
Text("\($0) people")
}
}
}
Section(header: Text("How much tip do you want to leave?")) {
Picker("Tip percentage", selection: $percentageIndex) {
ForEach(0 ..< tipPercentages.count) {
Text("\(self.tipPercentages[$0])%")
}
}.pickerStyle(SegmentedPickerStyle())
}
Section {
Text("$\(totalPerPerson, specifier: "%.2f")")
}
}.navigationBarTitle("WeSplit")
}
}
答案 0 :(得分:0)
此行为似乎是一个错误,将在Xcode 11.2中修复
答案 1 :(得分:0)
如果要选择所有行,则可以将HStack与Spacer一起使用:
ForEach(peopleRange) {
HStack {
Text("\($0) people")
Spacer()
}
}
答案 2 :(得分:0)
希望这对您有所帮助或给您一些想法。
Picker("Number of people", selection: $peopleIndex) {
ForEach(1..<100) { index in
ZStack{
Color.white
Text("\(index) people")
}
}
}
答案 3 :(得分:0)
尝试.contentShape(Rectangle())
ForEach(peopleRange) {
HStack {
Text("\($0) people")
Spacer()
}
.contentShape(Rectangle())
}