UIWindowの makeKeyAndVisible() おまじない的に使ってない? by atsuyan

iOSDC Japan 2024
LT(5分)

UIWindowの makeKeyAndVisible() おまじない的に使ってない?

n_atmark atsuyan n_atmark

みなさん、UIWindowを最前面に表示したい時どのように表示を行なっていますか?

多くの方が makeKeyAndVisible() を使っているのではないでしょうか。Developer Guideにも 「自身の windowLevel 以下のUIWindowの中で最前面に表示できる便利メソッド」であることが明記されています。

しかし、同時にDeveloper Guideには「表示だけであれば isHidden プロパティを false にすればよい」とも書いてあります。

makeKeyAndVisible() によってUIWindowが keyWindow となるため keyWindow なUIWindowが最前面のUIWindowであると思われがちですが実際にはそうではありません。

この理解が曖昧だと「キー入力は受け付けたいが最前面に表示したくない」といったケースで困ったり、「 makeKeyAndVisible() を呼んでいるのに別のUIWindowが最前面になってしまった」というケースで困ることがあります。

このLTではUIWindowの表示順決定方法について紹介しつつ、 makeKeyAndVisible() で何が起こっているのか紹介します。