Je sais qu'il existe un comportement intégré dans les modaux dans iOS selon lequel lorsque vous les faites glisser vers le bas, le modal se ferme et se ferme. Mais je rencontre un problème où le moindre défilement vers le bas sur un ScrollView dans un .popover le ferme instantanément.

J'utilise un .popover dans ce cas, car il s'agit d'un popover dans la version Mac de mon application, mais sous iOS, il utilise par défaut une feuille modale.

Voici ce qui se passe lorsque je fais défiler vers le bas:

enter image description here

À l'instant où je fais défiler vers le bas, le modal tremble et se ferme. Voici l'exemple de projet qui illustre cela:

import SwiftUI

struct ContentView: View {
  @State var showModal = false
  var body: some View {
    ZStack{
      Button("Open Sheet"){
        showModal = true
      }
    }
    .popover(isPresented: $showModal, arrowEdge: .bottom){
      ModalView(showModal: $showModal)
    }
  }
}

struct ModalView: View{
  @Binding var showModal: Bool
  var body: some View{
    ScrollView{
      VStack{
        Text("One")
        Text("Two")
        Text("Three")
      }
    }
    .frame(maxWidth: .infinity)
    .padding(20)
    .background(Color.gray)
  }
}

Puis-je faire quelque chose pour empêcher la fermeture de la feuille / du modal lorsque je fais défiler mon ScrollView vers le bas?

1
Clifton Labrum 13 mars 2021 à 10:13

1 réponse

Meilleure réponse

Il s'agit d'un bogue SwiftUI. Il a été corrigé dans Xcode 12.5 beta.

1
subdan 13 mars 2021 à 09:44