[SwiftUI]TextFieldの編集終了時に処理をするには?

SwiftUI

どうも、ちょげ(@chogetarou)です。

TextFieldのテキストの編集が終わった際に何らかの処理をする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

TextFieldの編集終了時に処理をするには、引数「onEditingChanged」を使います。

まず、TextFieldの引数「onChanged」に「{isEditing in }」のようなクロージャーを指定します。

TextField("",
    text: $editingText,
    onEditingChanged: { isEditing in
        
    }
)

次に、引数を使って、編集が終了した際の条件分岐をします。

最後に、条件分岐内に終了時の処理を追加します。

TextField("Your Text",
    text: $editingText,
    onEditingChanged: { isEditing in
        if !isEditing {
            //編集終了時の処理
        }
    }
)

引数「onEditingChanged」を使えば、TextFieldの編集が終わった際に処理をすることができます。

onEditingChange に指定するクロージャーの引数は、編集開始時にtrue、編集終了時にfalseになります。

使用例

以下は、使用例です。

struct ContentView: View {
    @State var editingText = ""
    
    var body: some View {
        VStack {
            TextField("Your Text",
                text: $editingText,
                onEditingChanged: { isEditing in
                    if !isEditing {
                        //編集終了時に大文字に
                        self.editingText = editingText.uppercased()
                    }
                }
            )
            .padding()
            .textFieldStyle(RoundedBorderTextFieldStyle())        }
    }
}

コメント

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