I used NSCharacterSet to eliminate everything except numbers. It’s a little clunky
let existingTextHasDecimalSeparator = textField.text?.range(of: ".")
let replacementTextHasDecimalSeparator = string.range(of: ".")
let replacementTextHasValidNums = string.rangeOfCharacter(from: NSCharacterSet.decimalDigits)
if (existingTextHasDecimalSeparator != nil && replacementTextHasDecimalSeparator != nil) || replacementTextHasValidNums == nil {
return false
} else {
return true
}