2017-10-27 7 views
3

나는 인터뷰에서이 질문을 여러 번 물어 보았습니다. 적절한 답을 얻지 못한 곳마다 검색되었습니다. 그래서 마침내이 질문을 게시합니다.iOS 응용 프로그램이 둘 이상의 창을 가질 수 있습니까?

+2

확인이 아웃 :

정의 된 세 가지 기본 창을 열거 수준이 있습니다! https://developer.apple.com/documentation/uikit/uiwindow – Mannopson

+2

예, 둘 이상의 창을 가질 수 있습니다. 하지만 한 번에 _key_ 일 수 있습니다. 여러 창을 사용하는 계획은 무엇입니까? – holex

답변

3

이 과정을 거칠 수도 있습니다.

예, 여러 개의 창을 가질 수 있습니다. 핵심 창은 사용자 입력을받는 창입니다.

  1. 그것은 또 다른 UIWindow를 추가 전혀 문제가되지 않습니다 : 나는 조금 주위에 연주와이 주제에 대한 정보를 얻으려고 다른 사람에 대한 몇 가지 메모를 작성하려 롭의 대답을 시작으로

    . 과 makeKeyAndVisible을 하나만 만들면됩니다. 끝난.

  2. 다른 창 이 보이도록 제거한 다음 더 이상 필요하지 않은 창을 놓으십시오.
  3. "키"인 창은 모든 키보드 입력을받습니다.
  4. UIWindow는 모든 항목, 심지어 모달, 팝업 등을 포함합니다. Brilliant!
  5. UIWindow는 항상 암시 적으로 세로로 있습니다. 그것은 회전하지 않습니다.
  6. 컨트롤러를 새 윈도우의 루트 컨트롤러에 추가하고 핸들을 회전시켜야합니다.
  7. (기본 창과 비슷 함) 창의 레벨에 따라 은 "높음"으로 표시됩니다. 모든 것을 커버하도록 UIWindowLevelStatusBar로 설정하십시오.
  8. 숨김 속성을 NO로 설정하십시오. A 2nd UIWindow를 사용하면 화면 상단에 모든 것을 띄우는 뷰를 가져올 수 있습니다. UIPopoverController에 그냥 더미 컨트롤러를 만들지 않고.
  9. Popover 컨트롤러가 없지만 iPhone과 비슷한 것을 모방하려는 iPhone에 특히 유용 할 수 있습니다.
  10. 그리고 네, 그것은 해결 물론, 내 문제 : 응용 프로그램이 활성화 사임 경우, 은 현재 응용 프로그램의 현재 내용의 스크린 샷을 복용 아이폰 OS를 방지하기 위해 표시됩니다 어떤 이상 커버 창을 추가 할 수 있습니다.
+1

더 많은 점을 추가해 주셔서 감사합니다. –

1

물론 여러 개의 창을 가질 수 있습니다. 한 번에 하나씩 표시되는 것은 keyWindow입니다. 어레이 또는 무엇이든간에 여러 창을 저장할 수 있으며 표시 할 때 keyWindow으로 만들 수 있습니다.

그리고 예, @Mannopson이 제안한 설명서를 읽으십시오. 매우 유용합니다.

+1

감사합니다. @Mannopson. 그게 정말 도움이. –

1

일반적으로 하나의 응용 프로그램에는 하나의 UIWindow 만 있으면되지만 한 응용 프로그램에서 여러 UIWindow를 사용해야하는 시나리오가있을 수 있습니다.

예를 들어, 시스템 AlertView의 맨 위에보기를 표시하거나 기본 키보드로 표시 할 수 있습니다.

UIWindows는 표시 순서가 .windowLevel 속성에 의해 제어되는 특수 UIView입니다.

새 UIWindow를 뷰의 하위보기로 추가 할 필요가 없습니다. 단순히 새 UIWindow를 만들고 setHidden : NO 창을 호출하거나 makeKeyAndVisible 창을 레벨에 따라 호출 할 수 있습니다.

  • UIWindowLevelNormal
  • UIWindowLevelStatusBar
  • UIWindowLevelAlert