To force a UITextfield for lowercase only I do the following:
lazy var myTextField: UITextField = {
let textField = UITextField()
textField.addTarget(self, action: #selector(forceLettersLowercased(_ :)), for: .editingChanged)
return textField
}()
@objc func forceLettersLowercased(_ sender: UITextField) {
sender.text = sender.text?.lowercased()
}
How can I achieve the same thing with a UITextView?
lazy var myTextView: UITextView = {
let textView = UITextView()
return textView
}()
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
let textLowerCased = text.lowercased()
textView.text = (textView.text as NSString).replacingCharacters(in: range, with: textLowerCased)
let numberOfChars = textView.text.count
return numberOfChars <= 200
}
I keep getting double letters, like when I type the letter 'W' I get a small one and a capital one, then when I press backspace I get: [__NSCFString replaceCharactersInRange:withString:]: Range or index out of bounds