どうも、ちょげ(@chogetarou)です。
TextFieldのテキストの編集が終わった際に何らかの処理をする方法を紹介します。
方法

TextFieldの編集終了時に処理をするには、引数「onEditingChanged」を使います。
まず、TextFieldの引数「onChanged」に「{isEditing in }」のようなクロージャーを指定します。
TextField("",
text: $editingText,
onEditingChanged: { isEditing in
}
)
次に、引数を使って、編集が終了した際の条件分岐をします。
最後に、条件分岐内に終了時の処理を追加します。
TextField("Your Text",
text: $editingText,
onEditingChanged: { isEditing in
if !isEditing {
//編集終了時の処理
}
}
)
引数「onEditingChanged」を使えば、TextFieldの編集が終わった際に処理をすることができます。
使用例
以下は、使用例です。
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()) }
}
}
コメント