みなさん、UIWindowを最前面に表示したい時どのように表示を行なっていますか?
多くの方が makeKeyAndVisible()
を使っているのではないでしょうか。Developer Guideにも 「自身の windowLevel
以下のUIWindowの中で最前面に表示できる便利メソッド」であることが明記されています。
しかし、同時にDeveloper Guideには「表示だけであれば isHidden
プロパティを false
にすればよい」とも書いてあります。
makeKeyAndVisible()
によってUIWindowが keyWindow
となるため keyWindow
なUIWindowが最前面のUIWindowであると思われがちですが実際にはそうではありません。
この理解が曖昧だと「キー入力は受け付けたいが最前面に表示したくない」といったケースで困ったり、「 makeKeyAndVisible()
を呼んでいるのに別のUIWindowが最前面になってしまった」というケースで困ることがあります。
このLTではUIWindowの表示順決定方法について紹介しつつ、 makeKeyAndVisible()
で何が起こっているのか紹介します。