[iOS] Responder Chain, FirstResponder
오늘은 Responder Chain, FirstResponder에 대해 정리해 보려고 합니다. :)
사용자가 앱에 터치를 하게 될때
앱이 어떻게 알고 반응하게 되는지 파악하는데 도움이 될거 같아요 !!
바로 스터디 해보겠습니다 .
Responder
Responder는 이벤트를 처리하고 반응할 수 있는 객체 입니다.
모든 Responder 객체는 UIResponder에서 상속된 클래스의 인스턴스 입니다.
Responder Chain
이벤트를 처리할수 있는 Responder를 쭉 찾아내는 것 -> 쭉 찾았을때도 없을시 해당 이벤트를 버림
예 ) UILabel을 터치했다고 가정 해봅시다. Responder Chain은 아래와 같이 동작합니다.
1. 사용자: UILabel 터치
(사용자 -> UILabel)
2. UILabel: 난 그냥 보여주기만 하는건데 👀 내가 아닌가보다 다음 responder UIView ~
(UILabel -> UIView)
3. UIView: 뭐야 나 이벤트 처리할줄 몰름. 다음 패스
(UIView -> UIView)
4. UIView: 뭐 ㅡㅡ
(UIView -> UIWindow)
5. 이런식으로 쭉~ 이벤트를 처리할 객체를 찾고 찾으면서 UIApplicationDelegate 까지 갔는데도 처리할게 없다면
해당 이벤트를 버려버립니다.
방금 보았던 flow를 Responder Chain 이라고 합니다.
First Responder
터치 이벤트에 응답할 수 있는 가장 하단의 뷰를 찾아냄.
상단 - 기기쪽
하단 - 사용자쪽
앱이 받은 이벤트를 처리할 적절한 responder 객체에게 이벤트를 넘겨 처리하는데,
해당 이벤트를 처음으로 넘겨받는 객체를 FirstResponder 라고 합니다.