在 SwiftUI 中使用 .searchable 防止导航栏隐藏

got*_*jam 5 ios swift swiftui

我遇到了 .searchable 的问题,我找不到修改器或覆盖来防止搜索栏在活动时显示动画并隐藏导航标题和工具栏元素。

.searchable当使用 SwiftUI 激活时,这是否可以防止文本栏动画化?

父视图

struct ParentSearchableView: View {
@EnvironmentObject var sessionStore: SessionStore
@Environment(\.dismiss) var dismiss
@StateObject var groupViewModel: GroupViewModel
@State var searchString: String = ""
@State var privacy = 0
@State var alertString = ""
@State var selected: Bool = false
@State var showSelectedSheet: Bool = false
var isCreate: Bool

var body: some View {
    VStack {
        GroupInviteSearchContainerView(groupViewModel: groupViewModel, searchString: searchString)
        .searchable(text: $searchString,
                    placement: .navigationBarDrawer(displayMode: .always) )
        .onSubmit(of: .search) {
            // Do Someting
        }
    .navigationTitle("Invite Friends")
    .navigationBarTitleDisplayMode(.large)
    .navigationBarHidden(false)
    .background(Color.primaryDark)
    .toolbar() {
        Button("\(groupViewModel.listSelection.count) Selected") {
            showSelectedSheet = true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

搜索容器视图

struct SearchContainerView: View {
@EnvironmentObject var sessionStore: SessionStore
@Environment(\.isSearching) var isSearching
@Environment(\.dismissSearch) var dismissSearch
@StateObject var groupViewModel: GroupViewModel
@State var searchString: String


var body: some View {
    VStack {
        if(groupViewModel.displayList.count > 0) {
            List{
                ForEach(groupViewModel.displayList) { user in
                    FriendSelectCellView()
                }
            }
            .scrollContentBackground(.hidden)
            .background(Color.primaryDark)
            .foregroundColor(.black)
        } else {
            Spacer()
        }
    }
    .navigationBarHidden(false)
    .background(Color.darkBackground)
    .onChange(of: isSearching) { newValue in
        groupViewModel.isSearching = newValue
    }
}
Run Code Online (Sandbox Code Playgroud)

}