dismissSearchモディファイアは、検索フィールドを非アクティブにするための機能です。
検索フィールドがアクティブな状態で、キーボードが表示されている場合にこのモディファイアを呼び出すと、キーボードが閉じられ、検索フィールドが非アクティブになります。
dismissSearchを実行した時の効果
サンプルコード
以下に、dismissSearchの使用例を示します。使い方を説明するためシンプルなプログラムにしています。
import SwiftUI
struct dismissSearchSmp: View {
@State private var searchText = ""
var body: some View {
dismissSearchChild()
.searchable(text: $searchText, placement:.navigationBarDrawer(displayMode: .always), prompt: "検索文字列")
}
}
struct dismissSearchChild: View {
@Environment(\.dismissSearch) private var dismissSearch
var body: some View {
NavigationStack {
List {
ForEach(0..<100) { index in
Text("Item \(index)")
}
}
.navigationTitle("Searchable List")
Button("検索を閉じる") {
dismissSearch()
}
}
}
}

この例では、dismissSearch関数を使用して、検索フィールドを非アクティブにするためのボタンを追加しています。
ボタンをタップすると、dismissSearchが呼び出され、検索フィールドが非アクティブになります。
これにより、キーボードが閉じられ、検索フィールドがフォーカスを失います。
まとめ
dismissSearchを使用することで、ユーザーが検索フィールドを閉じるための操作を提供することができます。
ただし、本機能は、searchableモディファイアにより実装した検索フィールドでは、デフォルトでcancelボタンが表示されるため必須の機能ではないでしょう。
実際の使いどころ
実際の使い所は、プログラムで検索フィールドを制御できるため、リストにデータを追加した際に検索フィールドを同時に閉じる動作を実装する場合などが考えられます。

