Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스위프트
- combine
- collectionview
- HIG
- Clean Code
- Refactoring
- ios
- Human interface guide
- UICollectionView
- swiftUI
- uiscrollview
- RxCocoa
- 애니메이션
- map
- 리펙토링
- 리펙터링
- rxswift
- SWIFT
- UITextView
- clean architecture
- Xcode
- Observable
- swift documentation
- Protocol
- ribs
- 리팩토링
- tableView
- MVVM
- uitableview
- 클린 코드
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] UIWindow, keyWindow, UITextEffectsWindow, UIKeyboardWindowScene, UIRemoteKeyboardWindow 개념 본문
iOS 응용 (swift)
[iOS - swift] UIWindow, keyWindow, UITextEffectsWindow, UIKeyboardWindowScene, UIRemoteKeyboardWindow 개념
jake-kim 2022. 6. 19. 22:33UIWindow 개념
- UIView의 서브클래싱이고, 앱의 뷰들을 표출할 컨테이너 역할과 이벤트를 수신하는 역할을 담당
- 키보드 이벤트의 대상으로 지정하는데 UIWindow를 통해 이벤트를 받고 처리
- UIWindow 하위에 속한 뷰들의 화면 변경
- UIWindow는 고유한 시각적 모양은 없지만, UIWindow의 RootViewController에서 하나 이상의 view를 가지고 있는 형태
- UIWindow가 여러개 존재할때는, keyWindow만이 터치 이벤트를 수신할 수 있음
// UIWindow는 UIView의 서브클래싱
@MainActor class UIWindow : UIView
keyWindow
- keyWindow란 UIWindow들 중에서 가장 먼저 터치 이벤트와 같은 메시지를 처리할 window를 의미
- 여러개의 window가 존재할때는 하나만의 keyWindow만 존재
- Xcode에서 Debug View Hieaarchy를 보면, UIWindow를 확인 가능
- UIWindowScene
- UIWindow
- UITransitionView
- UIDropShadowView
- UIWnidow는 key Window On 상태 (=keyWindow)
- 만약 UIWindow가 여러개 있고, 그 중 하나가 UIWindow의 메소드인 makeKeyAndVisible()를 통해서 keyWindow로 설정하면 기존의 keyWindow는 해제되며 keyWindow가 자동으로 변경 (keyWindow는 하나만 가능)
런타임에 생기는 UIWindow
- UITextField에서 키보드가 올라온 경우 생성되는 케이스
- 기존 UIWindow와 동일한 레벨로 UITextEffectsWindow 생성
- 기존 UIWindowScene과 동일한 레벨로 UIKeyboardWindowScene, UIRemoteKeyboardWindow 생성
- Uiremotekeyboardwindow는 애플에서 제공하는 시스템 키보드
- 키보드 아래부분의 터치 영역을 막아야 하므로, 애플에서는 UIWindow로 띄워줌으로서 해결
- 내부 ViewController에서는 대표적으로 UIInputWindowController와 UISystemKeybaordDockController가 존재
cf) UITextEffectsWindow이 내부적으로 가지고 있는 UI들은 UIRemoteKeybaordWindow하위에 가지고 있어서 상식상으로는 UITextEffectsWindow는 필요 없어보이지만 생겨나는걸로 봐서는 시스템 내부적으로 어떤 처리를 위해 존재하는 듯 합니다.
혹시 UITextEffectsWindow의 역할에 대해서 아신다면 댓글로 남겨주세요:)
* 참고
https://developer.apple.com/documentation/uikit/uiapplication/1622924-keywindow
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] URL 처리 방법 (URLComponents, URLQueryItem, DeepLink 모델링) (0) | 2022.06.21 |
---|---|
[iOS - swift] RxSwift, RxCocoa로 ApplicationState 구독하여 사용하는 방법 (1) | 2022.06.20 |
[iOS - swift] RxSwift로 retry 사용 방법 (네트워크 재시도, 에러처리) (0) | 2022.06.18 |
[iOS - swift] 4. 모듈화 개념 - Tuist로 프로젝트 관리 방법 (0) | 2022.06.15 |
[iOS - swift] 3. 모듈화 개념 - XCFramework 생성, 사용 방법 (2) | 2022.06.14 |
Comments