A TextField is a UI element that lets users enter and edit text in an app. It looks like a box where you can type.
Click to reveal answer
beginner
How do you create a simple TextField in SwiftUI?
Use TextField("Placeholder", text: $variable) where variable stores the typed text.
Click to reveal answer
intermediate
What is the purpose of the @State property wrapper with a TextField?
@State keeps track of the text typed by the user and updates the UI when the text changes.
Click to reveal answer
intermediate
How can you customize the keyboard type for a TextField?
Use the .keyboardType() modifier with options like .numberPad or .emailAddress to show the right keyboard.
Click to reveal answer
beginner
Why is accessibility important for TextField?
Accessibility helps users with disabilities use the TextField by providing labels and hints for screen readers.
Click to reveal answer
Which SwiftUI code creates a TextField with a placeholder "Enter name"?
ATextField("Enter name", text: $name)
BTextField($name, "Enter name")
CTextField(text: $name)
DTextField("name")
✗ Incorrect
The correct syntax is TextField("Placeholder", text: $variable).
What does the @State property do when used with a TextField?
ADisables the text field
BCreates a new keyboard
CChanges the font size
DStores and updates the text input by the user
✗ Incorrect
@State keeps the text value and updates the UI when it changes.
How do you change the keyboard to show numbers only for a TextField?
A.keyboardType(.emailAddress)
B.keyboardType(.numberPad)
C.keyboardType(.default)
D.keyboardType(.asciiCapable)
✗ Incorrect
Use .keyboardType(.numberPad) to show a number-only keyboard.
Which modifier adds a label for screen readers to a TextField?
A.accessibilityLabel("label")
B.font(.label)
C.textContentType("label")
D.keyboardType("label")
✗ Incorrect
.accessibilityLabel() provides a description for screen readers.
What happens if you forget to bind a TextField to a @State variable?
AThe keyboard won’t appear
BThe app crashes immediately
CThe text field won’t update or store user input
DThe text field becomes read-only
✗ Incorrect
Without binding, the TextField can’t save or show changes.
Explain how to create a basic TextField in SwiftUI and why binding with @State is necessary.
Think about how the app remembers what the user types.
You got /3 concepts.
Describe how to improve accessibility for a TextField in an iOS app.
Consider users who rely on voice feedback.
You got /3 concepts.
Practice
(1/5)
1. What is the primary purpose of a TextField in SwiftUI?
easy
A. To display static text that cannot be changed
B. To allow the user to enter and edit text input
C. To create buttons for user interaction
D. To show images in the app interface
Solution
Step 1: Understand the role of TextField
A TextField is a UI element designed for user input, specifically text entry.
Step 2: Compare with other UI elements
Static text is shown by Text or Label, buttons are for taps, images show pictures, so they differ from TextField.
Final Answer:
To allow the user to enter and edit text input -> Option B
Quick Check:
TextField = user text input [OK]
Hint: TextField lets users type text, not just display it [OK]
Common Mistakes:
Confusing TextField with Text or Label
Thinking TextField is for buttons or images
Assuming TextField is read-only
2. Which of the following is the correct syntax to create a basic TextField in SwiftUI bound to a state variable named name?
easy
A. TextField("Enter name", text: $name)
B. TextField(text: name, placeholder: "Enter name")
C. TextField("Enter name", text: name)
D. TextField(text: $name, placeholder: "Enter name")
Solution
Step 1: Recall SwiftUI TextField syntax
The correct syntax uses a placeholder string first, then a binding to a state variable with a $ prefix.
Step 2: Check each option
TextField("Enter name", text: $name) matches the correct syntax: TextField("Enter name", text: $name). Others misuse parameter order or omit $.
Final Answer:
TextField("Enter name", text: $name) -> Option A
Quick Check:
Placeholder first, then binding with $ [OK]
Hint: Use $ before state variable to bind TextField text [OK]
Common Mistakes:
Omitting $ before the state variable
Swapping placeholder and text parameters
Passing text variable without binding
3. What will be displayed on the screen after running this SwiftUI code snippet?
struct ContentView: View {
@State private var input = ""
var body: some View {
VStack {
TextField("Type here", text: $input)
Text(input)
}
}
}
medium
A. A text field that does not show any placeholder
B. Only a static text 'Type here' displayed
C. A text field with placeholder 'Type here' and below it the text the user types
D. An empty screen with no visible UI
Solution
Step 1: Analyze the TextField and Text usage
The TextField shows placeholder "Type here" and binds to input. The Text below shows the current input value.
Step 2: Understand UI behavior
When user types, input updates and Text shows the typed text live below the field.
Final Answer:
A text field with placeholder 'Type here' and below it the text the user types -> Option C
Quick Check:
TextField placeholder + live text display = A text field with placeholder 'Type here' and below it the text the user types [OK]
Hint: TextField updates bound variable, Text shows it live [OK]
Common Mistakes:
Thinking placeholder text is static Text
Assuming TextField does not show placeholder
Ignoring the live update of Text below
4. Identify the error in this SwiftUI code snippet:
struct ContentView: View {
@State private var text = ""
var body: some View {
TextField("Enter text", text: text)
}
}
medium
A. TextField cannot be used inside a View
B. TextField requires a placeholder but none is provided
C. State variable should not be private
D. Missing $ before the state variable in TextField binding
Solution
Step 1: Check TextField binding syntax
TextField requires a binding to a state variable, which needs a $ prefix to pass a binding, not the value.
Step 2: Identify the error in the code
The code passes text without $, so it passes a String, not a Binding<String>, causing a compile error.
Final Answer:
Missing $ before the state variable in TextField binding -> Option D
Quick Check:
Use $ to bind state variable in TextField [OK]
Hint: Always prefix @State vars with $ in TextField text binding [OK]
Common Mistakes:
Forgetting the $ prefix for binding
Thinking placeholder is optional (it is provided)
Misunderstanding @State privacy rules
5. You want to create a SwiftUI form where the user enters their email in a TextField. You want to validate the input so that the submit button is only enabled when the email contains an '@' character. Which approach correctly implements this behavior?
hard
A. Use a @State variable for email, bind it to TextField, and disable the button with .disabled(!email.contains("@"))
B. Use a constant String for email and enable the button always
C. Bind TextField to a local variable and enable button only if email length > 0
D. Use @State variable for email but do not bind it to TextField; enable button always
Solution
Step 1: Understand state binding and validation
Binding a @State variable to TextField allows live updates. Validation can check if email contains '@'.
Step 2: Control button enabled state
Using .disabled(!email.contains("@")) disables the button unless email has '@', enforcing validation.
Final Answer:
Use a @State variable for email, bind it to TextField, and disable the button with .disabled(!email.contains("@")) -> Option A
Quick Check:
Bind state, validate with contains('@'), disable button accordingly [OK]
Hint: Bind email state and disable button if '@' missing [OK]
Common Mistakes:
Not binding TextField to a @State variable
Using constant or local variables for input
Enabling button without validation
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.