通过点击整行来为选择器选择一个值

时间:2019-10-26 18:29:31

标签: ios swift swiftui

我正在构建一个具有Picker视图的SwiftUI应用。它嵌入在NavigationView中,因此,当我点击Picker的标题时,我将转到全屏选择视图以选择一个值。我只能通过点击Text本身来选择一个,但是如果我在红色区域之外点击则什么也不会发生。 areas of interaction on a screen

我想知道这是预期的行为还是某种错误?可以固定它吗,因此在该行的任何部分上点击都将被视为选择项吗? 代码如下:

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")
    }
}

4 个答案:

答案 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())
}