Swiftui TextField() нельзя использовать в определенном порядке контейнеровIOS

Программируем под IOS
Anonymous
Swiftui TextField() нельзя использовать в определенном порядке контейнеров

Сообщение Anonymous »

Я столкнулся со странным поведением и надеюсь, что кто-нибудь поможет мне понять, почему это происходит, чтобы я мог избежать подобных проблем в будущем. У меня сложное представление, но я урезал его полностью, насколько это было возможно, при этом демонстрируя проблему/ошибку/что угодно, и включил это ниже.
В реальном представлении есть ZStack с VStack, Grid и т. д., но я все это удалил, пока не дошел до этого.

Код: Выделить всё

// stripped down version of the view
struct DebugWTF: View {

@State var debugstring: String = ""

var body: some View {
ScrollView {
GeometryReader { geometry in
TextField("placeholder_eg", text: $debugstring)
}
}
}
}
Я обнаружил, что если изменить порядок контейнеров, TextField() начнет работать нормально.

Код: Выделить всё

var body: some View {
ScrollView {
GeometryReader { geometry in
TextField(...) // is NOT tappable
}
}
}
тогда мой TextField() нельзя будет нажать. Но это ДЕЙСТВИТЕЛЬНО сработает, если я поменяю их местами:

Код: Выделить всё

var body: some View {
GeometryReader { geometry in
ScrollView {
TextField(...) // IS tappable
}
}
}
Когда это сработало, я подумал, что, возможно, ScrollView ведет себя странно, если его прямым дочерним элементом является GeometryReader, но даже если я вставлю ZStack между ними, TextField() снова не будет доступен для нажатия:

Код: Выделить всё

var body: some View {
ScrollView {
ZStack {
GeometryReader { geometry in
TextField(...) // is NOT tappable
}
}
}
}
Может ли кто-нибудь объяснить, почему их заказ вызывает проблемы? Мне хотелось бы понять, что принципиально происходит, чтобы понять, как избежать подобных проблем в будущем.

Подробнее здесь: https://stackoverflow.com/questions/789 ... containers

Вернуться в «IOS»