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

Mary·2022년 9월 21일
1

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

profile
iOS

0개의 댓글