본문 바로가기

iOS/학습정리

iOS) UIResponder와 Responder Chain

UIResponder

이벤트에 응답하고 처리하기 위해 추상화된 인터페이스

class UIResponder : NSObject

UIResponder가 익숙하다면 UIView가 상속받는 객체이기 때문일 것이다.

class UIView : UIResponder

Responder 객체는 UIResponder에서 상속된 클래스들의 인스턴스이며, 이벤트 핸들링을 위한 인터페이스와 responder들의 기본행위를 정의한다.

UIApplication, UIViewController, UIView, UIWindow 등 많은 객체들이 채택하고 있으며, 모든 UIView 객체의 상위 클래스에 해당한다.

이벤트 핸들링

Responder 객체가 이벤트를 핸들링하는 방식은 크게 두 가지로 나뉜다. 전달 받은 이벤트를 처리하거나, 처리되지 않은 이벤트를 다른 responder에게 forwarding 하는 것이다.

이벤트를 전달 받은 responder 객체가 해당 이벤트를 처리하지 않을 경우 responder chain의 다음 responder로 forwarding한다. 이는 처리 될 때까지 전달되며, 마지막까지 처리되지 않을 경우 해당 이벤트 메세지는 버려진다.

The First Responder

앱에서 많은 종류의 이벤트를 처음으로 받는 responder 객체

대체로 앱이 이벤트를 처리하기 가장 적합하다고 판단하는 responder 객체를 지정한다. 앱이 이벤트를 받으면 UIKit이 해당 이벤트를 first responder에게 본낸다.

first responder가 되려면 UIResponder의 subclass에서 canBecomeFirstResponder 프로퍼티를 오버라이드하여 true를 리턴하도록 변경해야 한다. default 값은 false이다.

'iOS > 학습정리' 카테고리의 다른 글

SwiftUI) Widget - (2) How Widget Works  (2) 2021.02.28
SwiftUI) Widget - (1) Meet Widget  (0) 2021.02.28
iOS) Core Data  (2) 2021.02.02
iOS) Dispatch (GCD)  (0) 2021.02.01
iOS) Scene-Based Life-Cycle  (0) 2021.02.01