UIEvent
- Gesture Recognizer은 뷰보다 먼저 터치 이벤트를 수신
- UIGestureRecognizer.State.began / UIGestureRecognizer.State.changed / UIGestureRecognizer.State.ended / UIGestureRecognizer.State.cancelled.
- UITapGestureRecognizer : 한 손가락 터치 또는 여러 손가락 터치
- UIPinchGestureRecognizer : 핀치
- UIRotationGestureRecognizer : 회전
- UISwipeGestureRecognizer : 스와이프
- UIPanGestureRecognizer : 드래그
- UIScreenEdgePanGestureRecognizer : 가장자리 드래그
- UILongPressGestureRecognizer : 길게 터치
- view-based hit-testing을 활용하여 터치 위치를 결정
- → hitTest(_:with:)
- UIKit은 뷰 계층 구조안에서 뷰의 객체의 bounds와 터치 위치를 비교한다
- → clipsToBounds가 true일 때, bounds범위 안에서 터치되도록 제한
- → true일 때, SuperView만 터치 가능
- → bounds에서 벗어나면 터치 이벤트를 무시
- UIKit에서 UITouch 객체의 상태를 업데이트를 하는데, 유일하게 view만 변경되지 않음
- UIKit에서 터치가 끝나면 객체를 메모리 해체
정리
1. 사용자와의 상호작용에 따른 이벤트가 발생
- Touch, Press, shake, remote, Gestures..
2. UIKit는 이 이벤트를 처리할 수 있는 적절한 responder인 FirstResponder 찾을 때까지 이벤트를 넘김
- UIResponder -> UIGesturRecognizer...
3. UIControl은 target-action mechanism을 가지고있어서 직접 이벤트를 처리할 객체를 지정함
4. Gesture 인식을 위해선 Gesture Recognizer를 이용한다. 이 객체는 View보다 먼저 이벤를 받음
728x90
'Responder Chain' 카테고리의 다른 글
UIResponder (0) | 2024.01.26 |
---|---|
Gesture Recognizer 예시 코드 (0) | 2023.11.23 |
Responder Chain (0) | 2023.11.23 |
Touch Event (0) | 2023.08.19 |