SwiftUI: Scrollview не отвечает при первой загрузке - PullRequest
0 голосов
/ 28 марта 2020

У меня есть представление прокрутки на листе презентации, когда я динамически добавляю свои представления в представление прокрутки, представление прокрутки перестает отвечать на жесты касания. Однако, если я взаимодействую или прокручиваю представление, оно восстанавливает отзывчивость. Эта проблема возникает при первом запуске.

Я пробовал следующее безрезультатно:

  1. Принудительное фиксирование ширины и высоты
  2. Предоставление данных предварительной загрузки , так что когда мои данные загружаются туда, они перезаписывают некоторые данные stati c.
  3. Применение uuid к просмотру прокрутки , это решает проблема, но вызывает проблемы refre sh, а также препятствует прокрутке представления.

Ниже приведен мой код:

VStack{
  Text("Size:")
    .lineLimit(1)
    .font(.system(size: 16, weight: .medium))
    .foregroundColor(Color(ColorScheme().grayText()))
    .frame(maxWidth: .infinity, alignment: .leading)
    VStack{
      ScrollView(.horizontal, showsIndicators: false){
        HStack{
          ForEach(0..<self.sizeList.count, id: \.self){ index in
            ZStack{
              RoundedRectangle(cornerRadius: 5)
                .foregroundColor(Color.white)
                .frame(height: 30)
                .padding(0)
                .shadow(color: Color.black, radius: 6, x: 0, y: 3)
                VStack(alignment: .leading, spacing: 0){
                  Text("\(self.sizeList[index])")
                    .lineLimit(1)
                    .font(.system(size: 12, weight: .medium))
                    .foregroundColor(Color.black)
                    .frame(width: 50)
                }
                .padding(.leading, 7)
                .padding(.trailing, 7)
                .padding(.top, 5)
                .padding(.bottom, 5)
              }.onTapGesture {
                print("Tapped")
              }
            }.frame(maxWidth: .infinity)
          }
        }
      }
    }
    .frame(height: 50)
    .padding()
...