[Swift]SecureFieldの編集状態の変化を検知するには?

SwiftUI

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

SwiftでSecureFieldの編集状態の変化を検知する方法を紹介します。

スポンサーリンク

方法

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

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()
        }
    }
}

コメント

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