Выберите значение для выбора, нажав на всю строку - PullRequest
0 голосов
/ 26 октября 2019

Я создаю приложение SwiftUI, которое имеет Picker представление. Он встроен в 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 голосов
/ 27 октября 2019

Попробуйте .contentShape (Rectangle ())

ForEach(peopleRange) {
    HStack {
        Text("\($0) people")
        Spacer()
    }
    .contentShape(Rectangle())
}
0 голосов
/ 27 октября 2019

Если вы хотите выбрать все строки, вы можете использовать HStack с Spacer:

ForEach(peopleRange) {
    HStack {
        Text("\($0) people")
        Spacer()
    }
}
0 голосов
/ 27 октября 2019

Надеюсь, это поможет вам или даст вам несколько идей.

  Picker("Number of people", selection: $peopleIndex) {
                ForEach(1..<100) { index in
                    ZStack{
                        Color.white
                        Text("\(index) people")
                    }

                }
            }
0 голосов
/ 26 октября 2019

Кажется, что это поведение является ошибкой и будет исправлено в Xcode 11.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...