iOS

iPhone X系でホーム画面に行く動作をブロックする方法

iOS見出し

iPhone X系のフルスクリーン液晶の端末ではホームボタンが無くなりました。

代わりに導入されたのが、画面下に鎮座する白かったり黒かったりする横棒。
正式名称は「ホームインジゲーター (home indicator)」

画面の真下から上にスワイプするだけで簡単にホーム画面に移動できてとても便利なのですが、ゲームアプリなどで上にスワイプする操作がある場合、予期せぬホーム画面移動でストレスを招きますよね。

そこで、このホーム画面移動の操作をブロックする方法を紹介します。

とても簡単で、ブロックしたい画面のUIViewControllerでpreferredScreenEdgesDeferringSystemGesturesメソッドをオーバーライドして、UIRectEdge.bottomを返せば「最初の一回だけ」ホーム画面に移動する動作をブロックできます。

連続で上スワイプをした場合は2回目のスワイプでホーム画面に行ってしまいます。。

ホームボタンのあるiPhone X系以外の端末では、コントロールセンターが出てくる動作をブロックしてくれます。一回だけ。

 

この時、オシャレにするために、ホームインジケーターの表示を消すprefersHomeIndicatorAutoHiddenもオーバーライドしていた場合、上記のブロックが効かなくなるので注意してください。
(ちょっとハマった)