Ch.6 Bronze: Disallow Alphabetic Characters

sun·2022년 1월 22일
0

# 문자 입력 방지하기

  • 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  // 문자가 들어있는 경우 이전 text 를 유지
        }
        else {
            return true
        }
    }
}
profile
☀️

0개의 댓글

관련 채용 정보