[iOS][Swift] textField에서 Delegate Pattern 사용하기

채리·2022년 9월 21일

textField에서 Delegate Pattern은 유저와 커뮤니케이션 하는 용도로 쓰이며 직접적인 동작을 한다.

뷰컨트롤러에서 행위를 판단한다.

UITextFieldDelegate 프로토콜을 채택해야 한다.
textField와 뷰컨트롤러가 따로 존재하는데 textField 안에 델리게이트 속성이(대리자 속성) 있다.

textField.delegate = self

self는 뷰컨트롤러를 의미한다.

대리자는 메서드를 하나하나 채택해서 메서드를 구현한다.

델리게이트 패턴 == 대리자
어떤객체와 객체간의 의사소통(커뮤니케이션)
의사소통을 하기 위해 프로토콜을 사용

예를 들어, 유저가 아이디를 입력할 때 10글자까지만 허용한다는 상황에서

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

        let maxLength = 10
        let currentString: NSString = (textField.text ?? "") as NSString
        let newString: NSString =  currentString.replacingCharacters(in: range, with: string) as NSString

            return newString.length <= maxLength
        
    }

이러한 코드를 작성할 수 있다.

텍스트필드에서 항상 키보드를 나타내고 싶을 때

textField.becomeFirstResponder()

텍스트 입력 후 Done버튼을 누르면 키보드가 사라진다.

textField.resignFirstResponder()

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }

textField에서 기본적인 기능은 델리게이트 패턴 없이 사용할 수 있지만
고급 기능을 구현하고 싶을 때에는 델리게이트 패턴을 적용해 편리하게 사용할 수 있다.

0개의 댓글