shouldChangeCharactersIn
- 키보드 입력뿐만이 아니라, 붙여넣기, 잘라내기 일때도 호출됨.
- 키보드 입력시에는 string에 한글자만 저장되지만, 만약 붙여넣기를 하면 두 글자 이상이 저장될 수 있다.
- 만약 지우게 되면 string은 빈 값이 된다.
- 문자열의 카운트로 이게 삭제인지 아닌지 판단 가능.
입력 필터하기
- 해당 메소드가 호출될때 마다 replacementString에 원하는 형태(ex: 숫자, 영문 등)의 문자열인지 확인하고 맞을 경우 true, 아니라면 false를 리턴하도록 구현하면 된다.
Delegate 코드로 연결하기
- viewDidLoad()에서 연결하면 된다. (즉, 한 번만 실행되는 부분에서 연결)
- Delegate 프로토콜을 채택하는 걸 잊지 말자.
override func viewDidLoad(){
super.viewDidLoad()
firstOperandField.delegate = self
}
...
extension ViewController: UITextFieldDelegate{
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{
guard !string.isEmpty else {return true}
guard let _ = Int(string) else {return false}
return true
}
}