首页 > 解决方案 > 在 SwiftUI Popover 中下拉 ScrollView 会关闭它

问题描述

我知道 iOS 中的模态框有一个内置行为,当您向下滑动它们时,模态框会下拉并关闭。ScrollView但是我遇到了一个问题,即 a中最轻微的向下滚动.popover会立即关闭它。

.popover在这种情况下使用 a 是因为它是我的应用程序的 Mac 版本中的弹出框,但在 iOS 中它默认为模式表。

这是我向下滚动时发生的事情:

在此处输入图像描述

我向下滚动的那一刻,模态抖动并关闭。这是说明这一点的示例项目:

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)
  }
}

当我向下滚动时,我可以做些什么来防止工作表/模式关闭ScrollView

标签: iosswiftswiftui

解决方案


这是一个 SwiftUI 错误。它已在 Xcode 12.5 beta 中修复。


推荐阅读