ScrollView 破坏了 .sheet 表示

gra*_*han 6 swiftui

我正在尝试将工作表表示工作嵌套在ScrollView.

如果没有ScrollView修饰符.sheet,效果很好,但是当我将所有内容包装在滚动视图内时,修饰符只会触发一次。因此,第一次点击时,工作表看起来很好,但在关闭它后,我无法再次触发它。我不确定这本身是否是一个错误SwiftUI,或者我是否在这里做了什么。

注意:如果我将.sheet修饰符添加到其ScrollView本身,则一切正常。但对于我的用例,.sheet修饰符被添加到深深嵌套在ScrollView.

我正在使用 Xcode Beta 5

没有 ScrollView - 有效

struct SheetWorks: View {
    @State var showSheet = false

    var strings = [
      "Hello", "World", "!"
    ]

    var body: some View {
        HStack {
            ForEach(strings) { string in
                Button(action: {self.showSheet.toggle()}) {
                    Text(string)
                }
                .sheet(isPresented: self.$showSheet) {
                    Text("Here is the sheet")
                }
            }
        }
        .padding()
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 ScrollView - 不起作用

struct SheetDoesntWork: View {
    @State var showSheet = false

    var strings = [
      "Hello", "World", "!"
    ]

    var body: some View {
        ScrollView(.horizontal) {
            HStack {
                ForEach(strings) { string in
                    Button(action: {self.showSheet.toggle()}) {
                        Text(string)
                    }
                    .sheet(isPresented: self.$showSheet) {
                        Text("Here is the sheet")
                    }
                }
            }
            .padding()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

也许有人经历过类似的事情或者可以为我指明正确的方向。我真的很感谢任何帮助。

编辑:这个问题在 Beta 6 中仍然存在

gra*_*han 1

截至Xcode 11.1 GM Seed我可以批准修改.sheet器现在可以在ScrollView. 此外,多线Text现在也可以正确渲染。