@@ -7,7 +7,6 @@ public struct NumericTextField: View {
77 @Binding private var number : NSNumber ?
88 @State private var string : String
99 private let isDecimalAllowed : Bool
10- private let formatter : NumberFormatter = NumberFormatter ( )
1110
1211 private let title : LocalizedStringKey
1312 private let onEditingChanged : ( Bool ) -> Void
@@ -24,9 +23,8 @@ public struct NumericTextField: View {
2423 /// The closure receives a Boolean indicating whether the text field is currently being edited.
2524 /// - onCommit: An action to perform when the user performs an action (for example, when the user hits the return key) while the text field has focus.
2625 public init ( _ titleKey: LocalizedStringKey , number: Binding < NSNumber ? > , isDecimalAllowed: Bool , onEditingChanged: @escaping ( Bool ) -> Void = { _ in } , onCommit: @escaping ( ) -> Void = { } ) {
27- formatter. numberStyle = . decimal
2826 _number = number
29- if let number = number. wrappedValue, let string = formatter . string ( from: number) {
27+ if let number = number. wrappedValue, let string = decimalNumberFormatter . string ( from: number) {
3028 _string = State ( initialValue: string)
3129 } else {
3230 _string = State ( initialValue: " " )
@@ -38,18 +36,10 @@ public struct NumericTextField: View {
3836 }
3937
4038 public var body : some View {
41- return TextField ( title, text: $string, onEditingChanged: onEditingChanged, onCommit: onCommit)
42- . onChange ( of : string, perform : numberChanged ( newValue : ) )
39+ TextField ( title, text: $string, onEditingChanged: onEditingChanged, onCommit: onCommit)
40+ . numericText ( text : $ string, number : $number , isDecimalAllowed : isDecimalAllowed )
4341 . modifier ( KeyboardModifier ( isDecimalAllowed: isDecimalAllowed) )
4442 }
45-
46- private func numberChanged( newValue: String ) {
47- let numeric = newValue. numericValue ( allowDecimalSeparator: isDecimalAllowed)
48- if newValue != numeric {
49- string = numeric
50- }
51- number = formatter. number ( from: string)
52- }
5343}
5444
5545private struct KeyboardModifier : ViewModifier {
0 commit comments