iOS 26 では、コンテンツを分けるタブ群と検索タブとが分離される。これにより、コンテンツ操作時と検索時とで、タブバー領域の見た目が明確に区別される作りとなっている。
実装は簡単。
- 検索画面を内包する Navigation に
.searchablemodifier を指定(従来通り) - 検索タブに
role: .searchを指定- 指定しなければ、従来通りナビゲーションバー直下に検索フィールドが表示される
// 検索画面
struct SearchTabView: View {
@State private var text: String = ""
var body: some View {
NavigationStack {
VStack {
Image(systemName: "magnifyingglass")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Search")
}
.padding()
}
.searchable(text: $text)
.tabViewSearchActivation(.automatic)
}
}
...
// タブ定義
struct ContentView: View {
var body: some View {
TabView {
Tab("Entries", systemImage: "doc.text") {
EntriesTabView()
}
Tab("Answers", systemImage: "sparkles") {
AnswerTabView()
}
Tab(role: .search) {
SearchTabView()
}
}
}
}検索タブを選択した際に、検索フィールドにフォーカスを当てるか否かは、tabViewSearchActivation modifier で指定する。パラメタの TabSearchActivation はふたつあり、それぞれ挙動が異なる。
tabViewSearchActivation(_:) | Apple Developer Documentation
TabSearchActivation | Apple Developer Documentation
.automatic
検索タブをタップした際に、フィールドは展開するがフォーカスが当たるかは自動的に決まる。挙動を見るに、初期状態ではフォーカスは当たらず、フォーカスを当てたまま別タブに移動し、再度検索タブに戻った際にはフォーカス状態が復元されるように見える。
Music アプリがこの挙動をしており、検索画面として検索操作の前にあらゆる動線(カテゴリ)を見せたい場合に有効そう。
.searchTabSelection
検索タブをタップすると即フィールドが展開し、フィールドを閉じる(フィールド右のバツをタップする)と直前のタブに戻る。
Photos アプリがこの挙動をしている。前出の Music アプリと比較すると、以下の違いが見出せ、使い分けの参考にできそう。
- Music が世界中の膨大なコンテンツから、検索キーワードだけでなく、ジャンル、アーティストといった軸をもとに探し出す体験
- Photos はキーワードをもとに写真を検索する体験
ちなみに、検索タブの選択状態とカーソルフォーカスとは必ずしも連動しないため、検索タブを表示したままキーボードを閉じることはできる。(Photos ではこの状態で検索履歴の選択が行えるようになっている)
この検索タブの作りは、ミニマリズムでクリーンな印象を受ける一方で、上述したUIの仕組みやナビゲーションの構造を理解できていないと、やや使いこなすのが難しい気がしている。なぜなら iOS 18 以前は、タブ群はグローバルナビゲーションとして基本的に常時表示され、常に選択可能な状態であった。一方、iOS 26 では検索タブに遷移すると、タブ群はひとつのアイコンに集約され、選択肢が視認できなくなるからだ。
ユーザーが検索タブから任意のタブに移動したい場合、「メインのタブ群を展開する」→「目的のタブを選択する」という、2段階の操作を意識しなくてはいけない。ぼーっと触っているとこれが安易に頭から抜け、一瞬迷子になってしまうと感じている。