[swift] Swift 앱에서 런치 이미지에 터치 이벤트 처리하기

iOS 앱을 개발할 때, 앱이 시작될 때 보여지는 런치 이미지는 사용자에게 앱이 로딩 중임을 알리고 일반적으로 앱의 초기화가 완료되면 자동으로 사라집니다. 그러나 때로는 런치 이미지를 터치하면 추가적인 동작을 수행하고 싶을 수 있습니다. 이번 블로그 포스트에서는 Swift 앱에서 런치 이미지에 터치 이벤트를 처리하는 방법을 알아보겠습니다.

1. 앱 설정 변경하기

먼저, 앱의 설정을 변경하여 런치 이미지를 보여줄 때 터치 이벤트를 처리할 수 있도록 해야 합니다. 프로젝트 내의 Info.plist 파일을 열고, “Application Scene Manifest” 항목을 추가합니다. 이 항목에는 UISceneDelegate를 구현한 클래스의 정보가 포함되어야 합니다.

2. 터치 이벤트 감지하기

UISceneDelegate를 구현한 클래스에서 런치 이미지에 터치 이벤트를 감지하고 처리할 수 있습니다. 먼저 UIApplication.shared.delegate를 사용하여 앱의 delegate 객체를 가져옵니다. 그런 다음 window?.rootViewController?.view에서 터치 이벤트를 감지하고자 하는 뷰를 찾습니다. 해당 뷰에 UITapGestureRecognizer를 추가하고, 터치 시 호출될 메소드를 구현합니다.

import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(windowScene: windowScene)
        
        // 터치 이벤트를 처리할 view 설정
        if let rootView = window?.rootViewController?.view {
            let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:)))
            rootView.addGestureRecognizer(tapGesture)
        }
        
        window?.makeKeyAndVisible()
    }
    
    // 터치 이벤트 핸들러 메소드
    @objc func handleTap(sender: UITapGestureRecognizer) {
        // 터치 이벤트 처리 코드 작성
        print("런치 이미지가 터치되었습니다!")
    }
}

3. 터치 이벤트 처리하기

handleTap(sender:) 메소드에서는 터치 이벤트를 처리할 코드를 작성할 수 있습니다. 이 예시에서는 단순히 “런치 이미지가 터치되었습니다!”라는 메시지를 출력하도록 했습니다. 원하는 동작을 추가로 구현할 수 있습니다.

4. 터치 이벤트 테스트하기

앱을 실행하고 런치 이미지에 터치를 해보세요. Xcode 콘솔에 “런치 이미지가 터치되었습니다!”라는 메시지가 출력되어야 합니다. 이제 해당 메소드 내에서 원하는 동작을 구현하여 앱에 터치 이벤트를 추가로 처리할 수 있습니다.

위의 방법을 따라 Swift 앱에서 런치 이미지에 터치 이벤트를 처리하는 방법을 알아보았습니다. 이를 통해 앱의 로딩 화면을 조작하여 사용자와 상호작용할 수 있는 기능을 추가할 수 있습니다.

참고 자료