본문 바로가기
iOS/설명

[iOS] UIResponder

by Sky Titan 2022. 1. 4.
728x90
 

iOS의 Responder와 Responder Chain 이해하기

UIKit과 관련된 애플 문서를 볼 때 빈번하게 등장하는 Reponder Chain에 관련한 내용을 정리합니다. 여러 애플 문서를 참고하였으며, 포스트의 맨 아래 References에서 확인할 수 있습니다.

seizze.github.io

UIResponder

  • 사용자의 event들을 핸들링하는 추상 인터페이스
  • UIResponder를 상속받으면 touchesBegan, touchesMoved, touchesEnd 등의 메소드를 오버라이드해서 사용자 이벤트를 수신했을 때의 처리를 할 수 있다.
  • 이벤트의 종류는 터치, press, 모션, 원격 조종 등이 있다.
  • 또한 Responder Chain을 통해 event들을 핸들링할 수 있는 곳까지 포워딩하는 역할을 한다. 
  • UIView, UIApplication, UIViewController 모두 UIResponder를 상속받는다.

 

Responder Chain

  • 아래 그림과 같은 계층 구조를 가진 화면에서 UILabel, UITextField, UIButton이 가장 먼저 event를 수신하는 firstResponder가 된다.
    • 해당 컴포넌트들이 event를 핸들링하지 않는다면 그들의 부모인 UIView로 넘긴다.
    • 해당 UIView 또한 핸들링하지 않는다면 UIViewController로 넘기게 된다.
    • 그 다음은 UIWindow, 최종적으로는 UIApplication으로 넘기게 된다.

728x90

댓글