在 NavigationView 上可搜索的 SwiftUI 始终显示,仅在滚动时隐藏

SwiftUI searchable on NavigationView always shown, hides only on scroll

我正在编写一个关于电影的相当简单的 SwiftUI 应用程序,我遇到了这个问题,即 NavigationView 上的新 .searchable 修饰符总是显示,而它应该被隐藏,除非你拉在 List.

如果我向上滚动它会正确隐藏它,如果我向下滚动它也会正确隐藏它,但除此之外,它总是显示。请参阅 gif 进行说明。 (基本上它应该与消息应用程序中的行为相同)

https://imgur.com/R2rsqzh

我使用可搜索的代码非常简单:

var body: some View {
        NavigationView {
            List {
                ForEach(/*** movie stuff ***/) { movie in
                    ///// row here
                }
            }
            .listStyle(GroupedListStyle())
            .onAppear {
                // load movies
            }
            .navigationTitle("Discover")
            .searchable(text: $moviesRepository.searchText, placement: .toolbar, prompt: "Search...")
        }
    }
}

因此,在列表视图上方添加进度视图后,它突然开始按照我想要的方式工作。现在的代码改动很小,看起来像这样。

var body: some View {
    NavigationView {
        VStack {
            if /** we're doing search, I'm checking search text **/ {
                ProgressView()
                    .padding()
            }

            if !movies.isEmpty {
                List {
                    ForEach(/** movies list **/) { movie in
                        // movie row here
                    }
                }
                .listStyle(GroupedListStyle())
                .navigationTitle("Discover")
                .searchable(text: $moviesRepository.searchText, placement: .toolbar,
                            prompt: Text("Search...")
                                .foregroundColor(.secondary)
                )
            } else {
                ProgressView()
                    .navigationTitle("Discover")
            }
        }
    }
    .onAppear {
        // load movies
    }
}

基本上在添加进度视图之后,它开始按照我在 OP 中描述的方式以及它为 ChrisR 工作的方式开始工作