iOS/Developer Documentation

[UIKit] UIResponder 개발문서 번역

Joo-Topia 2021. 1. 10. 18:42

UIResponder

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


Declaration


class UIResponder : NSObject

Overview

리스폰더* 객체(UIResponder의 객체)는 UIKit 앱의 이벤트 처리 뼈대를 구성한다. UIApplication 객체, UIViewController 객체 및 모든 UIView 객체(UIWinow 포함)를 비롯한 많은 주요 객체도 리스폰더 객체이다. 이벤트가 발생하면 UIKIT은 해당 이벤트를 앱의 responder 객체로 보내서 처리한다.

*리스폰더 - 한국 말로 표현하자면 "응답자" 혹은 "응답 대상"이 가장 적절할 것 같다.

이벤트에는 터치 이벤트, 모션 이벤트, 원격 제어 이벤트 및 프레스 이벤트를 포함한 여러 종류의 이벤트가 있다. 특정 유형의 이벤트를 처리하려면 리스폰더가 해당 메서드를 오버라이드 해야한다. 예를 들어, 리스폰더는 터치 이벤트를 처리하기 위해 touchBegan(_:with:), touchMoved(_:with:), touchEnd(_:with:)touchCancelled(_:with:) 메서드를 구현해야 한다. 터치의 경우 리스폰더는 UIKit에서 제공하는 이벤트 정보를 사용하여 터치 변경 사항을 추적하고 앱 인터페이스를 적절하게 업데이트 하게 된다.

UIKit 리스폰더는 이벤트 처리 외에도 처리되지 않은 이벤트를 앱의 다른 부분으로 전달하는 작업도 관리한다. 지정된 리스폰더가 이벤트를 처리하지 않으면 해당 이벤트를 리스폰더 체인의 다음 이벤트로 전달한다. UIKit은 미리 정의된 규칙을 사용하여 이벤트를 수신하기 위해 다음에 어떤 객체가 있어야 하는지 결정한 뒤 리스폰더 체인을 동적으로 관리한다. 예를 들어 뷰는 이벤트를 superview로 전달하며 하이라키(계층)의 루트 뷰는 이벤트를 뷰 컨트롤러로 전달한다.

리스폰더는 UIEvent객체를 처리하면서 인풋 뷰를 통해 커스텀 입력을 수용할 수 있다.(인풋 뷰를 통해 들어어오는 이벤트도 수용 가능하다는 뜻 인가..) 시스템의 키보드는 입력 뷰의 가장 명확한 예시다. 사용자가 화면에서 UITextField 및 UITextView 객체를 누르면, 뷰가 첫 번째 리스폰더가 되어 시스템 키보드인 입력 뷰를 표시한다. 마찬가지로, 커스텀 입력 뷰를 만들고 다른 리스폰더들이 활성화 될 때 디스플레이 가능하다. 사용자 정의 입력 뷰를 응답자와 연결하려면 해당 리스폰더의 입력 뷰 속성에 연결하면 된다.

리스폰더 및 리스폰더 체인에 대한 자세한 내용은 Event Handling Guide for UIKit Apps.을 참고하면 된다.