티스토리 뷰
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를 참조하시기 바랍니다.
의견 및 지적 환영합니다 ^~^ //
참고 링크
'iOS 개발 > 개발자문서 정보' 카테고리의 다른 글
iOS ML모델 프레임워크, CoreML 문서개요 (0) | 2020.03.29 |
---|---|
CocoaTouch Framework Apple 공식 문서 개요 (0) | 2020.03.19 |
UITraitEnvironment, iOS 인터페이스 프로토콜 개요 (0) | 2020.03.18 |
iOS URL Loading System URLSession 기본체계 (0) | 2019.09.05 |
iOS UIScrollView 스크롤뷰 프로그래밍 가이드 문서개요 (0) | 2019.08.22 |
- Total
- Today
- Yesterday
- swift 기초
- 알고리즘
- swift string
- 자연어처리
- createML
- swift문제
- 프로그래머스
- 백준알고리즘
- 백준swift
- uikit
- swift언어
- ios
- 스위프트
- publisher
- 부스트코스
- swift알고리즘
- swift reduce
- Protocol
- 김프매매
- 알고리즘문제
- 개발자문서
- 컬렉션
- SwiftUI
- Swift 알고리즘
- swift
- 프로토콜
- 프로그래머스swift
- CoreML
- Collection
- swift 문자열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |