블로그

[iOS] UITextFieldDelegate 순서

게시 1분

단지 TextField에 작성된 Text와 버튼을 통해 입력을 받을 수 있는거 아닌가 싶겠지만,
그 중간 과정들을 개발자가 조정할 수 있다.
그럴때 사용하는 프로토콜이 UITextFieldDelegate 다.

1
먼저, 텍스트 필드를 클릭하면 textFieldShouldBeginEditing 메서드가 호출된다.
Edit을 시작할 것인지 묻는다고 생각하면 된다.
false를 리턴하면 키보드도 나타나지 않고 입력 자체가 불가능하다.
true가 반환되면 다음 과정들이 진행된다.

2

  • textFieldDidBeginEditing 이 호출된다.

입력이 시작됐을 때 실행될 기능들을 이 함수에 넣어주면 된다.

  • textFieldShouldClear 이 호출된다.

텍스트를 모두 지울것인지 묻는 함수다.

true를 리턴하면 텍스트를 모두 지워버리고, false를 리턴하면 텍스트를 놔둔다.

3
키보드에서 return을 누르거나 키보드에서 입력후 엔터를 치면
textFieldShouldReturn 이 호출된다.
근데 도대체 반환값이 어떤역할을 하는지 모르겠다.
공식문서에 따르면

'true if the text field should implement its default behavior for the return button; otherwise, false.'

라는데, 도대체 어떤 기본동작이 있는지 모르겠다. 몇번을 테스트해도 변화가 안보였다.
우선은 패스.

4
TextField의 endEditing(_ force: Bool) 함수를 호출하면
textFieldShouldEndEditing 함수가 호출된다.
편집을 종료할지 묻는 함수다.
반환값으로 true를 리턴하면 편집이 종료되면서
textFieldDidEndEditing이 호출되고 키보드가 사라진다.
false가 리턴되면 그냥 끝난다.

댓글

댓글을 남기면 닉네임(또는 GitHub 계정 정보)이 저장됩니다. 개인정보처리방침

GitHub