UIKit

UIKit | iOS 13 Deprecated - UIApplication.shared.keyWindow

ziziDev 2024. 12. 10. 18:45
반응형

 

iOS 13부터 멀티 씬(Multi Scene) 지원이 추가되었기 때문에, keyWindow는 더 이상 정확한 현재 화면의 윈도우를 반환하지 않습니다. 이 코드에서는 ProgressHUD를 현재 활성화된 윈도우에 추가하기 위해 UIApplication.shared.keyWindow를 사용했습니다.

해결 방법

대신 다음과 같은 코드로 변경해야 합니다.

 

if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
   let keyWindow = windowScene.windows.first(where: { $0.isKeyWindow }) {
    superView = keyWindow
}

 

변경 사항 요약

  • UIApplication.shared.connectedScenes로 현재 연결된 모든 씬(Scene)을 가져옵니다.
  • 첫 번째 씬을 UIWindowScene으로 캐스팅합니다.
  • windowScene.windows에서 현재 활성화된 Key Window를 가져옵니다.
  • $0.isKeyWindow는 현재 키 윈도우인지 확인하는 속성입니다.
반응형