How to restrict UITextField to take only numbers in Swift?

后端 未结 30 888
难免孤独
难免孤独 2020-12-04 08:40

I want the user to only enter numeric values in a UITextField. On iPhone we can show the numeric keyboard, but on iPad the user can switch to any keyboard.

30条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-04 09:12

    This is a more readable version that will do "0-9" plus ".":

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    
        let existingTextHasDecimal = textField.text?.rangeOfString(".")
        let replacementTextHasDecimal = string.rangeOfString(".")
        let replacementTextAllCharacters = NSCharacterSet(charactersInString: string)
        let replacementTextOnlyDigits = NSCharacterSet.decimalDigitCharacterSet().isSupersetOfSet(replacementTextAllCharacters)
    
        if replacementTextHasDecimal != nil && existingTextHasDecimal != nil {
            return false
        }else{
            if replacementTextOnlyDigits == true {
                return true
            }else if replacementTextHasDecimal != nil{
                return true
            }else{
                return false
            }
        }
    }
    

提交回复
热议问题