Swift TextField didChange 텍스트필드 값 변경 감지

 

Web이 됐든 app이 됐든 어떤 서비스를 하면서 값을 입력받을 때 가장 많이 사용하는 것이 textField이다. 오늘은 이 textField에 대해 알아보도록 하자.

 

 

 

 

기본적인 UITextField 사용법

이 글을 읽는 사람은 textField를 어떻게 생성하는지 이미 알고 계실거라 생각한다. 그래도 혹시나 모르는 분들을 위해 textField를 만드는 법에 대해 소개하겠다.

  1. 먼저 textField를 storyboard상에 올려놓고,
  2. viewController에서 @IBOutlet var textField: UITextField! 이런 식으로 적어준 뒤,
  3. 둘을 연결시켜준다.
  4. 원한다면 storyBoard상에서 placeholder 텍스트를 미리 입력시켜놓는다.

 

 

 

 

그렇다면 이렇게 텍스트가 입력될 때마다 이벤트가 발생하게끔 설정할 수는 없을까?

있다! textField에 .addTarget 을 접목시키면 된다. 구체적인 방법을 순서대로 살펴보자.

 

textField 값 변경 시 (textField didChange) 호출되는 메서드

  1. 먼저 textField 내의 text가 변경될 때 일어났으면 하는 로직을 담을 @objc func 하나를 선언하고 그 안에 코드를 입력한다.

    필자는 이를 위해 label하나를 스토리보드 위에 올려놓고 텍스트필드의 텍스트가 레이블에도 똑같이 뜨게끔 바꾸는 코드를 입력했다.

        @objc func textFieldDidChange(_ sender: Any?) {
            self.label?.text = self.textField?.text
        }

 

  1. 이제 텍스트필드에 해당 함수를 연결시켜주자. 필자는 viewDidLoad() 시점에 해당 함수가 연결되게끔 구현했다.

    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.textField.addTarget(self, action: #selector(self.textFieldDidChange(_:)), for: .editingChanged)
      // 자세히 보면 for: 뒤에 .editingChanged로 에디팅이 될 때마다 해당 함수가
      // 호출되리라는 것을 예상할 수 있다.
    }

 

한번 구현결과를 확인해보자.

Feb-11-2021 13-31-58

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom