비디오: [앱만들기 16강] 앱의 이벤트 처리순서와 실행조건을 설정하는 진행관리자 알아보기 2024
iOS 응용 프로그램으로 보내지는 대부분의 이벤트는 UIEvent 클래스의 인스턴스 인 이벤트 객체에 캡슐화됩니다. 터치 관련 이벤트의 경우 이벤트 객체에는 화면을 터치하는 손가락을 나타내는 하나 이상의 터치 객체 (UITouch)가 포함됩니다.
사용자가 손가락을 화면에 놓고 손가락을 움직이고 화면에서 손가락을 제거하면 시스템은 각 손가락의 변경 사항을 해당 터치 객체에보고합니다.
이벤트 배포 및 처리는 UIResponder 클래스의 인스턴스 인 응답 객체의 작업입니다. UIApplication, UIViewController, UIWindow 및 UIView 클래스 (및 자신의 RTAppDelegate)는 모두 UIResponder에서 상속받습니다.
이벤트 대기열에서 이벤트를 가져온 후 응용 프로그램은 해당 이벤트를 발생한 UIWindow 객체에 전달합니다. 창 객체는 차례로 터치 이벤트가 아닌 다른 이벤트의 첫 번째 수신자로 지정된 첫 번째 응답자에게 이벤트를 전달합니다.
터치 이벤트의 경우 첫 번째 응답자는 일반적으로 터치가 발생한 뷰 객체 (UIView)입니다. 예를 들어, 버튼에서 발생하는 터치 이벤트는 해당 버튼 객체로 전달됩니다. 첫 번째 응답자가 이벤트를 처리 할 수없는 경우 이벤트는 다음 응답자 (일반적으로 상위보기 또는보기 컨트롤러)로 전달됩니다. 해당 객체가 이벤트를 처리 할 수 없으면 이벤트를 처리 할 때까지 다음 응답자로 전달합니다.
응답 체인으로 알려져 있습니다. 메시지는 처리기가 처리되거나 폐기 될 때까지 창, 응용 프로그램 및 응용 프로그램의 위임자와 같은 상위 수준의 응답자 개체를 향해 응답 체인을 계속해서 이동합니다. 이벤트를 처리하는 응답 객체는 종종 애플리케이션에 의해 일련의 프로그래밍 방식 동작을 동작으로 설정합니다. 다음 목록은 사용자가 무언가를 가볍게 두 드렸을 때 실제로 일어난 일의 연대기를 제공합니다.
이벤트가 있습니다 - 예를 들어 사용자가 버튼을 탭합니다. 손가락을 만지거나 (화면에서 손가락을 들었을 때) 응용 프로그램의 이벤트 큐에 터치 이벤트가 추가됩니다. 터치 이벤트는 캡슐화 된
-
캡슐화 된
UIEvent 객체 UITouch 개체가 화면을 터치하는 각 손가락에 대해 존재하므로 개별 터치를 추적 할 수 있습니다. 사용자가 손가락으로 화면을 조작하면 시스템은 해당 객체의 각 손가락에 대한 변경 사항을보고합니다. 실행 루프 모니터가 이벤트를 전달합니다. 무언가를 처리해야 할 필요가있을 때 UIApplication의 이벤트 처리 코드는 이벤트를 적절한
-
응답자
객체로 전달하여 이벤트를 처리합니다. 이벤트가 발생할 때 (예: 사용자가 화면을 터치 할 때) Responder 객체는 UIApplication, UIWindow 및 UIView (및 해당 하위 클래스)의 인스턴스와 UIViewController (및 그
하위 클래스) 중 하나를 포함 할 수 있습니다. 이 모든 클래스는 UIResponder를 상속합니다. 응답 객체는 이벤트 처리 방법을 결정합니다. 예를 들어, 뷰 내의 버튼으로 발생하는 터치 이벤트는 버튼 객체로 전달된다. 단추 개체는 다른 개체 (이 경우 UIViewController 개체)에 작업 메시지를 보내 이벤트를 처리합니다. 내부 버튼을 사용하지 않고도 표준 버튼 객체를 사용할 수 있습니다. 타겟에 호출 할 메소드 (일반적으로보기 컨트롤러)를 버튼에 지시하면 기본적으로 설정됩니다.
-
메시지를 처리하면 사용자 인터페이스에서보기, 새로운보기 또는 다른 종류의 변경 사항이 변경 될 수 있습니다. 이러한 결과 중 하나가 발생하면보기 및 그래픽 인프라가 인계 받아 필요한 드로잉 이벤트를 처리합니다.
애플리케이션이 실행 루프로 돌아갑니다. 이벤트가 처리되거나 폐기 된 후에는 애플리케이션 제어가 실행 루프로 돌아갑니다. 그런 다음 실행 루프는 다음 이벤트를 처리하거나 더 이상 수행 할 필요가없는 경우 스레드를 절전 모드로 전환합니다.
하지만 애플리케이션이 기기에서 단독으로 작동하지 않기 때문에 SMS 메시지 나 사용자가 홈 버튼을 터치하여 중단 될 수 있습니다. 응용 프로그램이 중단되면 제어가 다른 응용 프로그램으로 전환되기 전에 몇 가지 사항을 처리해야합니다.