A powerful SwiftUI text field that handles formatting and retaining number values.


This is a Text Field package for SwiftUI that offers live formatting of a textfield. Specifically, this package assists with displaying numbered text labels during user input, while keeping the numbers formatted appropriately. Rather than showing the correct format upon a user committing to a change, Text Field Formatting offers live display during user input.


macOS(v12), iOS(v15), tvOS(v15), watchOS(v8)


- Non-US-like decimal formats sometimes provide inconsistent behavior with symbols (example: German).
    - Specifically, a whitespace is added before a percent symbol `%` when it should not.
    - I attempted to remove all whitespaces at assignment during formatting, but it seems to not work.
    - Requires more investigation.
- Percentage Formatter:
    - Unable to input a zero after a decimal: "0.01%". Trailing zeroes are filtered?
- UI
    - The keyboard is not changing when assigned in SwiftUI.
    - View is rendered full screen: AutoLayoutConstraints?
- Set access control for objects.


The NumberedTextField requires a NumberFormatter to operate properly. This property is set by the developer and allows customization of how numbers are to be displayed and collected.

Global Parameters:

The `alwaysShowDecimalSeparator` property is controlled by the `Coordinator`. If the developer chooses to not allow fractional input, set the `maximumFractionalDigits` property to zero.

Fractional Digits:

This property has a default value unique to the `NumberFormatter.numberStyle` property. If fractional input is not performing as expected, set the `.numberStyle` property appropriately before sending it to the view.

Change Log:


- The initial release. 
- Currently supports decimal format for US or similar decimal formats.

Flow Chart:

- User Input
- Process
    - Filter
    - Then:
        - Decimal?
        - Currency?
        - Percent?
- Format
- Set User Input 
- Then:
    - Callback functions


Fix the percentage. Figure out how to handle erasing the percent and last char.


View Github