How can I limit the number of decimal points in a UITextField?

后端 未结 15 2290
说谎
说谎 2020-12-01 05:20

I have a UITextField that when clicked brings up a number pad with a decimal point in the bottom left. I am trying to limit the field so that a user can only place 1 decimal

15条回答
  •  借酒劲吻你
    2020-12-01 06:10

    For Swift 2.3 to prevent user for enter decimal number after two places -

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
    {
        let decimalPlacesLimit = 2
        let rangeDot = txtPrice.text!.rangeOfString(".", options: .CaseInsensitiveSearch)
    
        if rangeDot?.count > 0
        {
            if (string == ".")
            {
                print("textField already contains a separator")
                return false
            }
            else {
    
                var explodedString = txtPrice.text!.componentsSeparatedByString(".")
                let decimalPart = explodedString[1]
                if decimalPart.characters.count >= decimalPlacesLimit && !(string == "")
                {
                    print("textField already contains \(decimalPlacesLimit) decimal places")
                    return false
                }
            }
        }
    }
    

提交回复
热议问题