[iOS] Text Delegate로 특정 문자만 입력 필터하기

RudinP·2024년 2월 23일
0

Study

목록 보기
175/227

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
	}
}
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글