본문 바로가기

Responder Chain

UIEvent

 

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