I want the keyboard for the UITextfield to only have a-z, no numbers, no special characters (!@$!@$@!#), and no caps. Basicly I am going for a keyboard with only the alphabet.
I was able to disable the space already. Anyone know how to disable numbers, special characters, and caps? A solution for any of these would be great.
Is the best solution to do the below for all the characters but I dont want?
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if (string == " ") {
return false
}
if (string == "1") {
return false
}
return true
}
An easiet way would be:
if let range = string.rangeOfCharacterFromSet(NSCharacterSet.letterCharacterSet())
return true
}
else {
return false
}
Update for those who wants to Allow Space, Caps & Backspace Only
Swift 4.x, Swift 5.x & up
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if range.location == 0 && string == " " { // prevent space on first character
return false
}
if textField.text?.last == " " && string == " " { // allowed only single space
return false
}
if string == " " { return true } // now allowing space between name
if string.rangeOfCharacter(from: CharacterSet.letters.inverted) != nil {
return false
}
return true
}
Swift 3 solution
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let characterSet = CharacterSet.letters
if string.rangeOfCharacter(from: characterSet.inverted) != nil {
return false
}
return true
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With