티스토리 뷰

반응형

 

 

UIResponder


이벤트를 처리하고 반응하기 위한 추상 인터페이스 (Abstract Interface)

 

 

Declaration


UIResponder의 인스턴스들, Responder 객체들은 UIKit App의 이벤트 처리 관련 뼈대(backBone)를 구성합니다. 그 예로 UIApplication, UIViewController, (UIWindow를 포함하는) UIView 객체들을 포함합니다.
 
 이벤트가 발생했을 떄, UIKit에서는 처리를 위해 해당 이벤트를 Responder 객체들로 전송합니다. 이때의 이벤트 종류로는 Touch / Motion / RemoteControl / Press Event 등이 있습니다. 구체적인 타입 이벤트를 다루기 위해 Responder는 이에 맞는 메서드들을 오버라이딩해야합니다. 그 예로, 터치 이벤트를 다루기 위해 Responder는

touchesBegan(_:with:)
touchesMoved(_:with:)
touchesEnded(_:with:)
touchesCancelled(_:with:)

등의 메서드를 사용합니다. 터치의 경우 Responder는 앱의 인터페이스의 적절한 업데이트, 터치 트랙 추척을 위해 UIKit에서 제공하는 이벤트 정보를 사용합니다. 

 처리 이벤트 (Handling Events) 뿐만 아니라, UIKit Responder는 App의 처리되지 않은 이벤트를 앱의 다른 파트로 전송하는 것을 관리해줍니다. 만약 주어진 Responder가 이벤트를 처리하지 않는다면, 해당 이벤트를 Responder Chain의 다음 이벤트로 전달합니다. UIKit은 사전에 정의된 규칙을 사용해 어떤 객체가 다음 이벤트를 수신해야 할지 결정하며 Responder Chain을 동적으로 관리합니다. 예를 들어 뷰가 자신의 슈퍼뷰에게 이벤트를 전달하고, 계층구조의 root뷰는 이를 뷰 컨트롤러로 전달합니다. 

이벤트의 전달과정
- UIView -> UIView's superView -> UIViewController -> UIWindow -> UIApplication -> UIApplicationDelegate


Responder들은 UIEvent 객체들을 처리하지만 이외에도 입력 뷰 (input view)를 통한 커스텀 입력을 받을 수도 있습니다.
시스템의 키보드가 대표적인 예시라고 할 수 있겠습니다. 유저가 스크린 상 UITextField, UITextView 객체를 탭 했을 때, 해당 뷰는 First Responder가 되며, 자신의 input view인 system keyboard를 보여줍니다. 유사하게, 당신은 커스텀 input view를 만들고 다른 Responder들이 활성화되었을 때 이를 보여줄 수 있습니다. 커스텀 input view를 Responder와 연관 짓기 위해서는 해당 뷰를 Responder의 input view로 할당하면 됩니다. Responder와 ResponderChain관련 정보를 얻고 싶으시면 Event Handling Guide for UIKit Apps를 참조하시기 바랍니다. 

 

의견 및 지적 환영합니다 ^~^ //

 

참고 링크

- UIResponder Apple 공식문서

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함