Могу ли я иметь полноэкранный ViewController, но все еще могу провести пальцем вниз, чтобы вернуться к родительскому (запускающему) ViewController

В iOS 13, когда мы представляем новый ViewController

                let newVC = NewViewController()
         self.present(newVC, animated: true)

это выглядит так, как показано ниже, где это не FullScreen, и его можно провести вниз, чтобы вернуться к запускающему ViewController

Чтобы сделать его полноэкранным, мы можем просто использовать .fullScreen как показано ниже.

                let newVC = NewViewController()
         newVC.modalPresentationStyle = .fullScreen
         self.present(newVC, animated: true)

Это будет выглядеть, как показано ниже, в полноэкранном режиме. Однако он больше не позволяет мне смахивать вниз, чтобы вернуться к родителю.

Есть ли способ смахнуть назад и вернуться к родительскому элементу с включенным FullScreen?

1 ответ

Решение

Вы можете попробовать следующий пример:

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    //Button is added via storyboard
    @IBAction func presentButtonDidTap(_ sender: UIButton) {
        let vc = NewViewController()
        vc.modalPresentationStyle = .fullScreen
        present(vc, animated: true)
    }
}

class NewViewController: UIViewController {
    
    override func viewDidLoad() {
        self.view.backgroundColor = .gray
        
        let gesture = UISwipeGestureRecognizer(target: self, action: #selector(dismissVC))
        gesture.direction = .down
        view.isUserInteractionEnabled = true // For UIImageView
        view.addGestureRecognizer(gesture)
    }
    
    @objc
    private func dismissVC() {
        dismiss(animated: true)
    }
}

Другие вопросы по тегам