TEAM LICENSES: Save money and learn new skills through a Hacking with Swift+ team license >>

Challenge 1

Forums > 100 Days of SwiftUI


       Section("Enter value:)"){
         TextField("Input value", value: $value1, format: .number)
       }
       .textFieldStyle(.roundedBorder)
       .keyboardType(.decimalPad)

Given this fragment of code, whenever the TextField content is changed, I want to execute a function. I looked at " .onEditingChanged", but it seems to have been deprecated. Is there a way to do this?

2      

I would say all depends on what you need to achieve. Below first textfiled is executing function as soon as you change the value1, the second texfield is executing function as soon as you switching focus to that textfield.

struct ContentView: View {
    @State private var value1 = 0
    @State private var value2 = 0
    @FocusState private var isEditing

    var body: some View {
        Section {
            TextField("Enter value", value: $value1, format: .number)
                .textFieldStyle(.roundedBorder)
                .keyboardType(.decimalPad)
                .onChange(of: value1) { oldValue, newValue in
                    print(oldValue)
                    print(newValue)
                }

            TextField("Enter value", value: $value2, format: .number)
                .foregroundStyle(isEditing ? .green : .red)
                .focused($isEditing).keyboardType(.decimalPad)
                .textFieldStyle(.roundedBorder)
                .keyboardType(.decimalPad)
        }
        .padding()
    }
}

2      

Thank you!

2      

Hacking with Swift is sponsored by String Catalog.

SPONSORED Get accurate app localizations in minutes using AI. Choose your languages & receive translations for 40+ markets!

Localize My App

Sponsor Hacking with Swift and reach the world's largest Swift community!

Reply to this topic…

You need to create an account or log in to reply.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.