Разрядность числа TextFild - Editing Changed

textfield
ios
swift

#1

Ребята , добрый день ! Прошу подсказать как при изменении TextFild - Editing Changed вводимое число например (15670.89) делилось на разряды (15 670.89)


#2

#3

я эту тему видела , и реализовала у себя, но проблема в том, что у меня на клавиатуре Decimal Pad не работает точка и поэтому я не могу ввести знаки после запятой , точка вообще не ставится, что мне изменить?
import UIKit
import Foundation

class ViewController: UIViewController, UITextFieldDelegate {

 @IBOutlet weak var textField: UITextField!

var cenaStringDouble = ""
var cenaDouble = 0.00

// функция деление на разряды
func separatedNumber(_ number: Any) -> String {
    guard let itIsANumber = number as? NSNumber else { return "" }
    let formatter = NumberFormatter()
    formatter.numberStyle = .decimal
    formatter.groupingSeparator = " "
    formatter.decimalSeparator = "."
    formatter.maximumFractionDigits = 2
    return formatter.string(from: itIsANumber)!
}


@IBAction func cenaTextField_EditingChanged(_ sender: Any) {
    
    cenaStringDouble = textField.text!.replacingOccurrences(of: " ", with: "")

    if textField.text != "" && (Double(cenaStringDouble) != nil)  {
        cenaDouble = Double(cenaStringDouble)!
        textField.text = separatedNumber(cenaDouble)
    }

}

#4

Можно сделать свой TextField, который будет форматировать введенный текст как надо.

Только вот вопрос, зачем такие названия методам придумывать? Это ж не правильно.


#5

Вот подходящий метод!!!

https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619599-textfield

func textField( _ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

<#code#>

}