スポンサーリンク
iPhone X系のフルスクリーン液晶の端末ではホームボタンが無くなりました。
代わりに導入されたのが、画面下に鎮座する白かったり黒かったりする横棒。
正式名称は「ホームインジゲーター (home indicator)」。
画面の真下から上にスワイプするだけで簡単にホーム画面に移動できてとても便利なのですが、ゲームアプリなどで上にスワイプする操作がある場合、予期せぬホーム画面移動でストレスを招きますよね。
そこで、このホーム画面移動の操作をブロックする方法を紹介します。
とても簡単で、ブロックしたい画面のUIViewControllerでpreferredScreenEdgesDeferringSystemGesturesメソッドをオーバーライドして、UIRectEdge.bottomを返せば「最初の一回だけ」ホーム画面に移動する動作をブロックできます。
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge { return .bottom }
連続で上スワイプをした場合は2回目のスワイプでホーム画面に行ってしまいます。。
ホームボタンのあるiPhone X系以外の端末では、コントロールセンターが出てくる動作をブロックしてくれます。一回だけ。
上から下にスライドした時に出てくる通知センターもブロックしたい場合は | で繋いで書きます。
(間違って || と書かないように!(軽くハマッタ))
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge { return .bottom | .top }
この時、オシャレにするために、ホームインジケーターの表示を消すprefersHomeIndicatorAutoHiddenもオーバーライドしていた場合、上記のブロックが効かなくなるので注意してください。
(ちょっとハマった)
override func prefersHomeIndicatorAutoHidden() -> Bool { return true }
スポンサーリンク