Disable textfield in SwiftUI
In this tutorial, we will see how to disable TextField in SwiftUI.
A disabled TextField
is useful when we don’t want users to change its text. This is helpful for showing information that should not be edited.
So, we can guide users through a form, or control input based on certain conditions.
Now, follow the methods below to achieve this task.
Using the disabled() modifier
We can apply the disabled()
modifier to the TextField
, and pass the boolean value true
within this modifier to make a TextField
disabled or uneditable.
Example
import SwiftUI struct ContentView: View { @State var textField = "" var body: some View { TextField("TextField Disabled", text: $textField) .font(.title) .textFieldStyle(RoundedBorderTextFieldStyle()) .padding() .disabled(true) //To disable the TextField } }
In the above program, I have applied the disabled()
modifier with a value of true
to the TextField
. So, the above program will disable the user interaction with the TextField
.
Output:
Dynamically control disabling
Now, I will create a @State
variable to dynamically control the disabled state of the TextField
. I will also use a Toggle
switch to dynamically disable or enable the TextField
.
So, when the toggle is on, the TextField
becomes editable, and when the toggle is off, the TextField
is disabled.
Example
import SwiftUI struct ContentView: View { // To store the text entered into the TextField @State private var textField = "" // To control the disable state of the TextField @State private var isDisabled = true var body: some View { VStack { TextField("TextField Disabled", text: $textField) //To enable or disable TextField dynamically based on isDisabled state .disabled(isDisabled) .textFieldStyle(RoundedBorderTextFieldStyle()) Toggle("Enabe/Disable", isOn: $isDisabled) } .font(.title) .padding() } }
In the above code, I have created a @State
variable called isDisabled
and used a Toggle
switch to dynamically enable and disable the TextField
based on the isDisabled
variable.
Output:
Conditionally enable the disabled TextField
In SwiftUI, we can control the interaction of the TextField
dynamically using the disabled()
modifier and the boolean conditions. We can use the @State
variables to track conditions, and can enable or disable TextFields based on these variable values.
Now, we will create a dynamic form with three text fields that will be enabled or disabled based on certain conditions, like typing in one TextField
or pressing return can trigger the enabling of the next TextField
.
Example
import SwiftUI struct ContentView: View { @State private var firstTextField = "" @State private var secondTextField = false @State private var thirdTextField = false var body: some View { VStack { TextField("TextField 1", text: $firstTextField, onCommit: { // Enable the second TextField when return key is pressed secondTextField = true }) TextField("TextField 2", text: .constant(""), onCommit: { // Enable the third TextField when return key is pressed thirdTextField = true }) .disabled(!secondTextField) // Enable/disable based on condition TextField("TextField 3", text: .constant("")) .disabled(!thirdTextField) // Enable/disable based on condition } .font(.title) .textFieldStyle(RoundedBorderTextFieldStyle()) .padding() } }
The above code will create three text fields. The first one is enabled, we can interact with it.
So, when we type on it and press enter, it will enable the second TextField
.
Similarly, when we type in the second field and press enter, it will enable the third TextField
.
Each field depends on the previous one for activation.
Output:
Leave a Reply