# 문자 입력 방지하기
- textField(_:shouldChangeCharactersIn:replacementString:) 메서드 안에서 rangeOfCharacter(from:) 메서드를 이용해서 문자가 들어오는 경우에는 이를 뱉어내도록 했다
- 문자인 지 여부를 어떻게 확인할 수 있을 지 궁금했는데 CharacterSet 타입의 static 프로퍼티인 letters 를 사용해서 판별했다.
class ConversionViewController: UIViewController, UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let existingTextHasDecimalSeparator = textField.text?.range(of: ".")
let replacementTextHasDecimalSeparator = string.range(of: ".")
let replacementTextHasCharacter = string.rangeOfCharacter(from: .letters)
if existingTextHasDecimalSeparator != nil, replacementTextHasDecimalSeparator != nil {
return false
}
if replacementTextHasCharacter != nil {
return false
}
else {
return true
}
}
}