Я столкнулся со странным поведением и надеюсь, что кто-нибудь поможет мне понять, почему это происходит, чтобы я мог избежать подобных проблем в будущем. У меня сложное представление, но я урезал его полностью, насколько это было возможно, при этом демонстрируя проблему/ошибку/что угодно, и включил это ниже.
В реальном представлении есть 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