(programming in swift 2)
I have a UITextField that when the user types into it should be automatically converted to lower case WHILE typing (so NOT after form validation).
I have gotten this far:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
//only convert to lowercase for username field
if textField == textFieldUsername {
//let stringRange = NSRange(location: range.location, length: range.length)
let completedString = (textField.text ?? "" as NSString).stringByReplacingCharactersInRange(range, withString: string)
//convert the while thing to lowercase and assign back to the textfield
textField.text = completedString.lowercaseString
//return false to indicate that the "system" itself should not do anychanges anymore, as we did them
return false
}
//return to the "system" that it can do the changes itself
return true
}
Problem is that (1)when the user presses and holds on the UITextField to (2)move the cursor to somewhere halfway inside the string and (3)start typing that (4)the cursor jumps back to the end of the already inputted string.
Does the cursor position needs to be restored after textField: shouldChangeCharactersInRange is called maybe?