이벤트 수신 시 UIKit이 가장 먼저 하는일은 자동으로 해당 이벤트를 가장 적절한 Responder 객체로 보내는 것.
Event type | First responder |
---|---|
Touch events | The view in which the touch occurred. |
Press events | The object that has focus. |
Shake-motion events | The object that you (or UIKit) designate. |
Remote-control events | The object that you (or UIKit) designate. |
Editing menu messages | The object that you (or UIKit) designate. |
가속도계, 자이로스코프 및 자력계와 관련된 모션 이벤트는 Responder 체인을 따르지 않습니다.
대신 Core Motion은 해당 이벤트를 지정된 개체에 직접 전달합니다. 자세한 내용은 코어 모션 프레임워크를 참조하십시오.
UIKit은 View 기반 적중 테스트를 사용하여 터치 이벤트가 발생하는 위치를 결정합니다. 특히 UIKit은 터치 위치를 View 계층 구조의 View 객체 경계와 비교합니다.
UIView의 hitTest(_:with:) 메서드는 View 계층을 순회하여 터치 이벤트에 대한 첫 번째 Responder가 되는 지정된 터치를 포함하는 가장 깊은 하위 View를 찾습니다.
터치 위치가 View의 범위를 벗어나면 hitTest(:with:) 메서드는 해당 View와 모든 하위 View를 무시합니다.
결과적으로 View의 clipsToBounds 속성이 false이면 해당 View의 경계를 벗어난 하위 View는 터치를 포함하더라도 반환되지 않습니다.
적중 테스트 동작에 대한 자세한 내용은 UIView의 hitTest(:with:) 메서드에 대한 설명을 참조하세요.
터치가 발생하면 UIKit은 UITouch 객체를 생성하고 이를 View와 연결합니다.
터치 위치 또는 기타 매개변수가 변경되면 UIKit은 동일한 UITouch 객체를 새 정보로 업데이트합니다.
변경되지 않는 유일한 속성은 View입니다. (터치 위치가 원래 View 외부로 이동하더라도 터치의 View 속성 값은 변경되지 않습니다.) 터치가 종료되면 UIKit은 UITouch 객체를 해제합니다.