1. iOS 기기에 터치가 일어남.
2. iOS 하드웨어의 어떤 물리적 위치에 눌려졌는지 확인.
3. UIApplication 객체에게 터치가 일어났다고 알려줌.
4. UIApplication은 눌려진 좌표중에서 가장 화면 위에있는 혹은 가장 깊이 View를 탐색해서 터치가 일어난 View를 찾는다
왜냐하면,우리가 사용하고 있는 기기의 뷰들은 모두 SuperView위에 AddSubView가 된 구조로 많이 이루어져있기 때문에 한 좌표에 여러 뷰가 있을 수 있다. 그 중, 터치가 일어나고 처리되야할 View를 찾는 것. (이 과정을 hitTest라고도 한다.)
이 과정에서는 FirstResponder를 사용하지 않음!
터치 이벤트(UITouch Event)와 뷰는 연결됨! 또한, 우리가 임의적으로 Event를 새로 만들 수 없음
5. UIApplication은 View에게 Event를 전달함.
이제 어떤 View가 Touch를 처리해야함을 찾았으니 Event를 전달한다. sendEvent:
6. 선택된 View는 UIResponder에 있는 touchesBegan(_ :with:) 매서드를 실행함.
7. touchesBegan메서드가 실행 된 순간부터 들어온 Event는 계속 선택된 View가 맡게됨.
TouchEvent는 한번만 실행될수도 있지만 초당 60번을 받을 수 있기때문에 연속적으로 들어올 수도 있다.
Event는 한번 손가락을 대고 땔때까지는 고유한 ID를 가지고 있는 것과 비슷하다.
그 고유한 ID에서 오는 Event는 찾은 View가 실행하는 것이다.
여기서 또 봐야할 것은 touches , 즉 복수이다.
따라서 하나의 이벤트에 여러개의 터치가 들어올수 있다.(아이폰의 경우 6개까지 가능하다고함)
8.터치가 계속 지속이됨. touchedMoved(_ :with:)
9. 터치가 끝남. touchesEnded(_ :with:) or 터치가 취소됨 touchesCancelled(_ :with:)
터치한 손가락을 땠을 때 touchesEnded(_ :with:) 메서드가 실행이 되거나 아니면 App을 실행도중 전화가 온다던지등의 이벤트가 발생하면 터치가 최소됨 touchesCancelled(_ :with:)
iOS 병아리이기 때문에 틀린 부분이 있을 수 있습니다.
태클은 언제나 환영입니다 😄
'iOS' 카테고리의 다른 글
서버없이 Networking Test하기 with URLProtocol (2) | 2022.05.15 |
---|---|
iOS Cache (2) | 2022.04.24 |
Responder Chain (3) | 2022.03.29 |
AutoLayout - 2 (0) | 2021.08.23 |
AutoLayout - 1 (0) | 2021.08.23 |
댓글