SwiftUI ScrollView, GeometryReader и Button = странное поведение - PullRequest
0 голосов
/ 01 мая 2020

В течение последних 2 часов я пытался заставить работать ScrollView кнопок, а точнее ScrollView кнопок, который использует GeometryReader для определения его размера. Кроме того, все это помещено в NavigationView.

Было странное поведение, такое как кнопки, не выполняющие свое действие, не регистрирующие касание, а когда они помещены в HStack в VStack для решетчатой ​​структуры, я мог только нажмите первый ряд кнопок с намеченными эффектами, остальные кнопки не отвечали. Как правильно структурировать все эти представления?

1 Ответ

0 голосов
/ 01 мая 2020

Код ниже работал для меня:

    var body : some View {
        NavigationView {
            VStack{
                GeometryReader{ geometry in
                    ScrollView {
                      // This is just how i'm setting up my buttons
                        VStack {
                            ForEach(0 ..< 2, id: \.self) { row in
                                HStack {
                                    ForEach(0 ..< 2, id: \.self) { column in
                                        TestButton()
                                    }
                                }
                            }
                        }
                    }
                }
            }.navigationBarTitle("")
            .navigationBarHidden(true)
        }
        .navigationViewStyle(StackNavigationViewStyle())
        .edgesIgnoringSafeArea(.all)
        .navigationBarTitle("")
        .navigationBarHidden(true)
    }

Обратите внимание, что GeometryReader должен быть вложен в ScrollView, если бы не было странного поведения (в моем случае, я можно было только нажать на первую строку кнопок с намеченными эффектами). Надеюсь, это кому-нибудь поможет!

...