web-dev-qa-db-ja.com

iOSアプリケーションが複数のウィンドウを持つことができる可能性はありますか?

インタビューで何度もこの質問をされましたが、どこでも適切な答えが得られなかったので、ついにこの質問をここに投稿しました。

11
Bharat Bhushan

あなたはこれを経験するかもしれません。

はい、複数のウィンドウを持つことができます。キーウィンドウは、ユーザー入力を受け取るウィンドウです。

ロブの答えから始めて、私は少し遊んだので、このトピックに関する情報を取得しようとしている他の人のためにいくつかのメモを書き留めたいと思います。

  1. 別のUIWindowを追加してもまったく問題ありません。 1つ作成してmakeKeyAndVisibleを作成するだけです。完了。
  2. 別のウィンドウを表示して削除し、不要になったウィンドウを解放します。
  3. 「キー」であるウィンドウは、すべてのキーボード入力を受け取ります。
  4. UIWindowは、モーダル、ポップオーバーなど、すべてをカバーします。素晴らしい!
  5. UIWindowは常に暗黙的に縦向きになります。回転しません。
  6. 新しいウィンドウのルートコントローラーにコントローラーを追加し、そのコントローラーに回転を処理させる必要があります。
  7. (メインウィンドウと同じように)ウィンドウのレベルによって、表示される「高さ」が決まります。 UIWindowLevelStatusBarに設定して、すべてをカバーするようにします。
  8. 非表示のプロパティをNOに設定します。 2番目のUIWindowを使用して、すべての上に浮かぶビューを画面に表示できます。 UIPopoverControllerに埋め込むためだけにダミーコントローラーを作成する必要はありません。
  9. これは、ポップオーバーコントローラーがないが、そのようなものを模倣したいiPhoneで特に役立ちます。
  10. もちろん、私の問題は解決しました。アプリがアクティベーションを辞任した場合は、現在表示されているものの上にカバーウィンドウを追加して、iOSがアプリの現在のコンテンツのスクリーンショットを撮らないようにします。
21
Karthik Kumar

通常、1つのアプリケーションに必要なUIWindowは1つだけですが、1つのアプリケーションで複数のUIWindowを使用する必要があるシナリオもあります。

たとえば、システムのAlertViewsの上部にビューを表示したい場合や、デフォルトのキーボードを表示したい場合があります。

UIWindowsは特別なUIViewであり、その表示順序は.windowLevelプロパティによって制御されます。

ビューのサブビューとして新しいUIWindowを追加する必要はありません。新しいUIWindowを作成し、指定したレベルに応じて、window setHidden:NOまたはwindowmakeKeyAndVisibleのいずれかを呼び出すことができます。

3つのデフォルトのウィンドウ列挙レベルが定義されています。

  • UIWindowLevelNormal
  • UIWindowLevelStatusBar
  • UIWindowLevelAlert
4
nilam_mande

もちろん、複数のウィンドウを持つことができます。ただ、一度に表示されるのは1つだけ、つまりkeyWindowです。複数のウィンドウを配列などに格納し、それらを表示するときにkeyWindowにすることができます。

そして、ええ、@ Mannopsonが提案したドキュメントを読んでください。それは非常に便利です。

0
Fahri Azimov