どうも、ちょげ(@chogetarou)です。
SwiftでSecureFieldの編集状態の変化を検知する方法を紹介します。
方法

SecureFieldの編集状態の変化を検知するには、引数「onCommit」とonTapGesture修飾子を使います。
まず、編集状態を保持する変数を用意します。
@State var isEditing = false
次に引数「onCommit」にクロージャー指定し、クロージャー内で編集状態をfalseにします。
SecureField("", text: $password, onCommit: {
self.isEditing = false //編集していない状態に
})
最後に、SecureFieldにonTapGesture修飾子を付与し、クロージャーで編集状態をtrueにします。
SecureField("", text: $password, onCommit: {
self.isEditing = false //編集していない状態に
})
.onTapGesture {
self.isEditing = true
}
これでSecureFieldの編集状態の変化を検知できるようになります。
使用例
以下は、使用例です。
struct ContentView: View {
@State var isEditing = false
@State var password = ""
var body: some View {
VStack{
SecureField("", text: $password, onCommit: {
self.isEditing = false
})
.onTapGesture {
self.isEditing = true
}
.padding()
.border(isEditing ? Color.red : Color.blue, width: 2)
.padding()
}
}
}
コメント