TabView
),但是由于仅SwiftUI应用程序可以重现该问题,因此我为简单起见了一个。
import SwiftUI
@main
struct HiddenTabBarTestApp: App {
@State private var selectedIndex = 0
var body: some Scene {
WindowGroup {
TabView(selection: $selectedIndex) {
Text("First Tab")
.tabItem {
Label("1", systemImage: "1.circle")
}
.tag(0)
NavigationStack {
Button("Go to first tab") {
selectedIndex = 0
}
.searchable(text: .constant(""))
}
.tabItem {
Label("2", systemImage: "2.circle")
}
.tag(1)
}
}
}
}
在iPados或Macos上运行该应用程序 nave to novita
单击搜索栏
@Environment(\.dismissSearch)
我能够在iPad上复制该问题。当搜索字段接收到焦点时,标签栏将被隐藏。当导航回到第一个选项卡视图时,选项卡栏不会再次显示,除非首先取消搜索。
Macos,我发现即使搜索字段的焦点也是可见的,也可以看到标签栏。我想这可能取决于窗口工具栏样式或其他工具栏修饰符。 ayway,一个解决方法是使用the biondifier的变体,该变体采用boolean binting
.searchable
:isPresented
:(需要iPados 17.0+ / macOS 14.0+)。然后:
searchable(text:isPresented:placement:prompt:)
@State private var isSearching = false