사용자의 성 및 이름과 같은 일부 textField가 포함 된 설정보기가 있습니다. 사용자가 글자 이외의 다른 글에 입력 할 수 없도록하고 싶습니다. 몇 가지 연구 후 나는 이것을 달성하기위한 가장 좋은 방법은 textFieldShouldReplaceCharactersInRange 대리자 메서드를 사용하는 것이라고 발견했습니다. 내가 가지고있는 코드는 글자로만 입력 할 수 있도록하는 것처럼 보이지만 백 스페이스는 허용하지 않습니다. 필자는 방법에 대한 사과 설명서를 읽었지만, 힘들 때 그것을 이해하고 있습니다. 그것이 굉장히 좋을 수있는 멍청한 놈의 친절한 방법으로 설명 될 수 있다면 왜 허용되지 않는 백 스페이스가 컸을 지 설명하면 진정으로 이해할 수 있습니다. 내 코드가textFieldShouldReplaceCharactersInRange 구현 후 백 스페이스를 사용할 수 없습니다.
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == firstNameTextField {
let allowedCharacter = NSCharacterSet.letters
let replacementTextHasRightCharacters = string.rangeOfCharacter(from: allowedCharacter as CharacterSet)
if replacementTextHasRightCharacters == nil {
return false
} else {
return true
}
}
return true
}