検索フィールドのアクティブ状態を取得するには?【isSearching】

この記事は約3分で読めます。
  • iOS:15.0以上
  • XCode(当サイトの環境):15.0.1

isSearchingは、SwiftUIのEnvironmentValuesの一部であり、検索フィールドがアクティブであるかどうかを示すブール値です。これを使用すると、検索フィールドがフォーカスされている間に特定の動作を実行したり、UIの表示を変更したりすることができます。

サンプルコード

具体的な例を以下に示します。

import SwiftUI

struct isSearchingSmp: View {
    @State private var searchText = ""

    var body: some View {
        NavigationStack {
            SearchedView()
                .searchable(text: $searchText)
            Spacer()
        }
    }
}

struct SearchedView: View {
    //Environmentプロパティを設定し検索状態を取得できるようにする
    @Environment(\.isSearching) private var isSearching

    var body: some View {
        //検索フィールドをタップなどによりアクティブ・非アクティブを変更にすると表示を切り替える
        if isSearching {
            Text("Search is active")
                .foregroundColor(.blue)
        } else {
            Text("Search is inactive")
                .foregroundColor(.red)
        }
    }
}

動作の説明

非アクティブ
アクティブ

この例では、isSearchingを使用して、検索フィールドがアクティブであるかどうかに応じて異なるメッセージと文字色を変えて表示しています。

検索フィールドをタップなどによりアクティブにすると、isSearchingtrueになり、“Search is active”が表示されます。
検索フィールドが空の場合やフォーカスが外れた場合は、isSearchingfalseになり、“Search is inactive”が表示されます。

まとめ

このように、isSearchingを使用することで、検索フィールドの状態に応じて動的にUIを変更することができます。

タイトルとURLをコピーしました