SwiftUIのTextFieldで編集中と編集完了を検知する


SwiftUIのTextFieldで編集中と編集完了を検知する方法です。 UIKit よりも少ないコードで実現できている気がします。

TextField

import SwiftUI
struct ContentView : View {
@State var userName: String = ""
@State var onEditing: Bool = false
var body: some View {
VStack {
Text(onEditing ? "On Editing" : "Not On Editing")
TextField("Placeholder", text: $userName, onEditingChanged: { onEditing in
print("onEditingChanged: \(onEditing)")
self.onEditing = onEditing
}, onCommit: {
print("onCommit")
})
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
}
}
}