들어가며
회원가입 화면을 만들면서 비밀번호 입력부에 Secure Text Entry를 적용하였는데, 아래와 같이 눈 모양 버튼을 통해 Secure Text Entry를 해제하고 활성화시킬 수 있게 하는 것이 목표였다. 나는 Keep Pressed 되었을 때에만 입력된 비밀번호를 보여주고 터치가 해제되었을 때에는 다시 Dot으로 돌리고 싶었고 그래서 내장 Action들을 찾아서 해결하였다.
평소 모르던 Action들도 많았기 때문에 이참에 DId End On Exit부터 Value Change까지 15가지의 Action들을 살펴보고자 한다.
본론
Storyboard에서 IBAction(Interface Builder Action)을 만들려고 하면 나오는 왼쪽 화면 Touch Up Inside가 선택되어있는 곳을 선택하면 우측 리스트가 나오게 된다. 그곳엔 총 15가지의 Action들이 존재하는데, 이제부터 하나씩 살펴보려고 한다!
- Did End On Exit: 키보드의 Return 키 눌렀을 때
- Editing Changed : 내용이 변경되었을 때
- Editing Did Begin : 포커스가 들어왔을 때
- Editing Did End : 포커스가 나갔을 때
위의 4가지는 UITextFieldDelegate, UITextViewDelegate에서 자주 사용했던 이벤트들이네요!
- Touch Cancel : 다른 터치 이벤트를 취소한다(Touch Up 작동 안 함)
- Touch Down : 터치(터치하는 그 순간)
- Touch Down Repead : 빠르게 두 번 터치했을 때, 두 번째 터치가 되는 시점
- Touch Drag Enter : 터치한 컴포넌트의 일정 영역 바깥으로 나갔다가 다시 들어왔을 때
- Touch Drag Exit : 터치한 컴포넌트의 일정 영역 바깥으로 나갔을 때
- Touch Drag Inside : 터치한 컴포넌트 위에서 누른 채로 이동
- Touch Drag Outside : 터치한 컴포넌트의 일정 영역 밖으로 누른 채로 이동
- Touch Up Inside : 터치한 컴포넌트에서 손을 뗐을 때
- Touch Up Outside : 터치한 컴포넌트의 일정 영역 바깥에서 손을 뗐을 때
- Value Changed : 컴포넌트의 속성이 변경되었을 때(ex, 세그먼트)
나는 저 15가지 중에서 Touch Down과 Touch Up Inside, Touch Up Outside를 이용하여 앞서 들어가며에서 말했던 눈 버튼을 구현하였다.
이 세가지를 활용한다면 별도의 로직 없이 터치를 유지해야만 가려진 비밀번호가 보이고 터치를 해제하면 다시 가려지게 된다!
Touch Up Outside를 사용한 이유는 터치를 유지한채로 버튼 영역 외부로 이동했을 때의 예외를 잡기 위해서이다.