見出し画像

SwiftUIをはじめてみよう!-TextField

"TextField"を使ってみましょう。

"TextField"は入力欄など1行で文字入力をしたいときに使います。

使い方ですが、公式サイトの例示をシンプルにしてみます。"//"で必要なさそうなところをコメントアウトして実行させてみます。

    @State private var username: String = ""
//    @FocusState private var emailFieldIsFocused: Bool = false
    
    
    var body: some View {
        TextField(
            "User name (email address)",
            text: $username
        )
//        .focused($emailFieldIsFocused)
//        .onSubmit {
//            validate(name: username)
//        }
        .textInputAutocapitalization(.never)
        .disableAutocorrection(true)
        .border(.secondary)
        
        
        Text(username)
//            .foregroundColor(emailFieldIsFocused ? .red : .blue)
    }

実行結果です。

文字を入れるとリアルタイムに表示されます。

リアルタイムに表示される仕組みについては

"@FocusState"を使った例示をすこし変更して

@State private var username: String = ""
    @FocusState private var emailFieldIsFocused: Bool
    
    
    var body: some View {
        TextField(
            "User name (email address)",
            text: $username
        )
        .focused($emailFieldIsFocused)
        .onSubmit {
            print("送信")
        }
        .textInputAutocapitalization(.never)
        .disableAutocorrection(true)
        .border(.secondary)
        
        
        Text("入力\(username)")
            .foregroundColor(emailFieldIsFocused ? .red : .blue)
    }
    

として実行すると、まず入力前は

入力欄をクリック(Focusされた)した時に"emailFieldIsFocused"

 .focused($emailFieldIsFocused)


何か入れようとすると、文字色が赤色に変わります。

Text("入力\(username)")
   .foregroundColor(emailFieldIsFocused ? .red : .blue)

の部分で規定しています。

Text Field Prompts

"Form"を使ってみます。

    @State private var username = ""
    @State private var password = ""
    
    var body: some View {
        
        Form {
            TextField(text: $username, prompt: Text("Required")) {
                Text("Username")
            }
            SecureField(text: $password, prompt: Text("Required")) {
                Text("Password")
            }
        }

実行すると

入力できます。パスワードは"点"で表示されます。

Styling Text Fields

Text Fieldの見た目をカスタマイズ。

@State private var name: String = ""
    
    var body: some View {
        
            TextField(
                "Name",
                text: $name
            )
            .textFieldStyle(.roundedBorder)
    }

実行すると

".plain"に変更してみます。

.textFieldStyle(.plain)

となります。

この記事が気に入ったらサポートをしてみませんか?