LoginSignup
8
3

More than 1 year has passed since last update.

【Swift】モーダルを下スワイプで閉じられなくなった(iOS15)

Posted at

どういうことか

例としてWebViewControllerをモーダルで表示している。
――で、こんな感じ。

21fef13bf9d8a29223897b8a8bcec9c9.gif

閉じることができない。もどかしい。

なぜか

iOS15からハーフモーダルがライブラリなしに実装できるようになったためだと思われる。
結論から言うと、閉じるためのハンドル(取っ手)をつける記述を書かないと閉じることができない。

if let sheet = webViewController.sheetPresentationController {
    // コレ
    sheet.prefersGrabberVisible = true
}

6d944162d9481716dac92ec82983611b.gif

取っ手が出て閉じられるようになった。
iOS15のみの対応であるため、2021年10月現在実際に書かれるコードはこんな感じになるだろう。

if #available(iOS 15.0, *) {
    if let sheet = webViewController.sheetPresentationController {
        sheet.prefersGrabberVisible = true
    }
} else {
    // Fallback on earlier versions
}

ちなみに

ハーフモーダルにするのはたったこれだけ。

if #available(iOS 15.0, *) {
    if let sheet = webViewController.sheetPresentationController {
        sheet.detents = [.medium()]
    }
} else {
    // Fallback on earlier versions
}

8055a396d1dcb26b4a6cf935c16990e3.gif

ハーフモーダルにすると枠外タップで閉じることができる。フルモーダルは枠外タップ閉じることができない。
調べてないけど、閉じる(あるいは閉じない)設定もあるかもしれない。

一応公式

おわり(´・ω・`)

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3