Как добавить "."после того, как я наберу + 3 цифры - PullRequest
0 голосов
/ 04 февраля 2019

Я хотел бы отформатировать свою цифровую запись и добавить один "."после максимум трех цифр (0 <= 999,99) ... и иметь возможность добавить "."всякий раз, когда я хочу ... </p>

Таким образом, я изменил тип клавиатуры текстового поля, чтобы быть десятичным (который уже включает в себя точку) ...

  1. Мне нужна проверкадля числового диапазона, который составляет 0,000 <= 999,999 </p>

  2. Мне нужна еще одна проверка, которая позволит мне вводить 3 десятичных числа после "."

т.е.

 123.456
 4.546
 or 85.60

Все, что я нашел, это примеры других страниц, использующих запятые и валюты, но каждые 3 цифры добавляется символ ...

Это мой лучший подход к проблеме:

func textField(_ textField: UITextField, shouldChangeCharactersIn 
   range: NSRange, replacementString string: String) -> Bool {
   guard let text = textField.text, let decimalSeparator = 
   NSLocale.current.decimalSeparator else {

        return true 

    }

    var splitText = text.components(separatedBy: decimalSeparator)
    let totalDecimalSeparators = splitText.count - 1
    let isEditingEnd = (text.count - 3) < range.lowerBound

    splitText.removeFirst()


    if
        splitText.last?.count ?? 0 > 1 && string.count != 0 &&
        isEditingEnd

    {
        return false
    }

    // If there is already a dot I don't want to allow further dots
    if totalDecimalSeparators > 0 && string == decimalSeparator {
        return false
    }

    // Only allow numbers and decimal separator
    switch(string) {
    case "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", decimalSeparator:
        return true
    default:
        return false
    }
}

, что он делает, это набирать цифры (максимум 10 цифр) и после того, как я нажимаю "."затем точка принимает только 2 десятичных знака

т.е.

 12.30
 1540.67
 128438.78

Любая помощь принимается!Заранее спасибо!

...