TextField
public class TextField : UIView
Note
This component is available in the following variants:- ✅ Standard
With the following attribute status:
- ✅ Disabled
- ✅ Read-only
- ✅ Helper text
- Size:
- ✅
MediumX - ✅
Medium
- ✅
- Style:
- ✅
Outlined
- ✅
- Interaction state:
- ✅
Enabled - ✅
Active (focus) - ✅
Filled
- ✅
- Feedback state:
- ✅
Error - ✅
Success
- ✅
- Action:
- ✅
None - ✅
Icon button - ✅
Image
- ✅
- Type:
- ✅
Text - ✅
Password - ✅
Number - ❌
Multiline
- ✅
TextField is a class that represents a component from the design system.
It can be configured with 2 different sizes:
- MediumX (default)
- Medium
Example of usage:
let textField = TextField()
textfield.configure(size: .medium)
The textField styles, keyboards, capitalization and autocorrection properties changes according to the chosen type.
This TextField has 4 types:
- Text (default type)
- Name
- Number
- Password
Example of usage:
textField.configure(type: .text)
textField.configure(type: .password(keyboardType: .numberPad)
The TextField has 3 states for feedback, that can be configured with a message:
- Error
- Success
- None (clear error/success states)
Example of usage:
textField.configure(state: .error, with: "Error")
// to clear the state:
textField.configure(state: .none)
It also can be configured as a required field, ‘read-only’ field or disabled textField. Each interaction state has its pre-defined style:
textField.configure(isEnabled: false)
textField.configure(readOnly: true)
textField.configure(required: true)
The TextField also has an action item on the right, which can be configured with an icon from NatDSIcons, a local image or a remote image:
textField.configure(icon: getIcon(.outlinedDefaultMockup)) { action }
textField.configure(image: UIImage(named: "imageName")) { action }
textField.configure(remoteImageURL: URL(string: "urlForImage")) { action }
There are properties that changes the textfield styles as well.
Properties:
title: Label text always displayed above textfieldplaceholder: Hint text to display when the text is emptyhelper: Hint text always displayed below textfielderror: Text that alerts about an error
To manage the TextField, use UITextFieldDelegate protocol as usual.
textField.delegate = yourDelegate
Requires
It’s necessary to configure the Design System with a theme or fatalError will be raised.
DesignSystem().configure(with: AvailableTheme)
-
A string with the text to be always displayed above textfield
Declaration
Swift
public var title: String? { get set } -
Undocumented
Declaration
Swift
public var theme: AvailableTheme -
Undocumented
Declaration
Swift
public static var currentTheme: AvailableTheme -
A string with the text inside the textField
Declaration
Swift
public var text: String? { get set } -
A string with the hint text to be displayed when the textField is empty
Declaration
Swift
public var placeholder: String? { get set } -
A string with a helper text to be displayed below textField
Declaration
Swift
public var helper: String? { get set } -
A string with a text that alerts about an error. It triggers the state
.errorfor the textField.Declaration
Swift
public var error: String? { get set } -
The type of the textfield, chosen from the
TextFieldTypeenumDeclaration
Swift
public var type: TextFieldType { get set } -
A boolean that indicates if filling the textField is mandatory
Declaration
Swift
public var required: Bool { get set } -
A boolean that indicates if the textField is filled with info that can’t be changed
Declaration
Swift
public var readOnly: Bool { get set } -
A boolean that indicates if the textField is enabled or disabled
Declaration
Swift
public var isEnabled: Bool { get set } -
The size of the textfield, chosen from the
TextField.SizeenumDeclaration
Swift
public var size: Size { get set } -
Undocumented
Declaration
Swift
public weak var delegate: UITextFieldDelegate? { get set }
-
Undocumented
Declaration
Swift
public private(set) lazy var textField: NatField { get set } -
Undocumented
Declaration
Swift
public init(theme: AvailableTheme = .none) -
FeedbackState is an enum that represents the possible states for a TextField. The chosen state indicates the type of feedback should be displayed, and sets the style for the textField. The
errorandsuccessstates also display an icon with the corresponding color and image. Thenonestate clears the textField if they’re already configured with another state.These are all states allowed for a TextField:
- error
- success
- none
Declaration
Swift
public enum FeedbackState -
Undocumented
See moreDeclaration
Swift
public enum InteractionState : CaseIterable -
Undocumented
See moreDeclaration
Swift
public struct ThemeColor -
Size is an enum that represents the possible sizes for the TextField height. The default size is
mediumX.These are all sizes allowed for a TextField:
- medium
- mediumX
Declaration
Swift
public enum Size : CaseIterable -
Undocumented
Declaration
Swift
@discardableResult override func becomeFirstResponder() -> Bool -
Undocumented
Declaration
Swift
@discardableResult override func resignFirstResponder() -> Bool
-
Sets the textField title, displayed above the textField box
Declaration
Swift
public func configure(title: String)Parameters
titleA string with the text for the title
-
Sets the textField placeholder, a hint text displayed inside the textField box when it is empy
Declaration
Swift
public func configure(placeholder: String)Parameters
placeholderA string with the text for the placeholder
-
Sets the textField size, which changes it’s height
Declaration
Swift
public func configure(size: Size)Parameters
sizeAn option from
TextField.Sizeenum -
Sets the textField type, which changes it’s configuration for keyboard, secure text, capitalization and autocorrection
Declaration
Swift
public func configure(type: TextFieldType)Parameters
typeAn option from
TextFieldType -
Sets the state of the textField and a text to describe the state
Declaration
Swift
public func configure(state: FeedbackState, with text: String?)Parameters
stateAn option from
TextField.FeedbackState: error, success or nonetextA string with the text to be displayed below the textField box. If the state is
errororsuccess, the text will have a small icon next to it. If the state isnone, the text will be displayed as a helper text. -
Sets if the textField is required, when its filling is mandatory
Declaration
Swift
public func configure(required: Bool)Parameters
requiredA boolean indicating if the textField is required
-
Sets if the textField is enabled or disabled
Declaration
Swift
public func configure(isEnabled: Bool)Parameters
isEnabledA boolean indicating if the textField is enabled
-
Sets if the textField is read only
Declaration
Swift
public func configure(readOnly: Bool)Parameters
readOnlyA boolean indicating if the textField is read only
-
Sets a helper text to be displayed below the textField box
Declaration
Swift
public func configure(helperText: String)Parameters
helperTextA string with the helper text
-
Undocumented
Declaration
Swift
public func configure(icon: String?, with action: @escaping () -> Void) -
Sets an icon button to be displayed inside the textField box, aligned with it’s right side.
Declaration
Swift
public func configure(iconButton: NatIconButton)Parameters
iconButtonAn
NatIconButtonto be displayed in the textField right edge -
Sets a local image to be displayed inside the textField box, aligned with the right side, and the action to be executed when it is tapped.
Declaration
Swift
public func configure(image: UIImage?, with action: @escaping () -> Void)Parameters
imageAn UIImage to be displayed in the textField right edge
actionA block of code to be executed when the image is tapped
-
Sets a remote image to be displayed inside the textField box, aligned with the right edge, and the action to be executed when it is tapped.
Declaration
Swift
public func configure(remoteImageURL: URL, with action: @escaping () -> Void)Parameters
remoteImageURLA URL that contains the remote address to the image. Example:
URL(string: "http://myimage")!actionA block of code the be executed when the image is tapped
-
Removes the action item, whether it’s an icon or an image
Declaration
Swift
public func configureRemoveAction() -
Sets a delegate for the TextField
Declaration
Swift
public func configure(delegate: UITextFieldDelegate?)