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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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