【问题标题】:SafariViewControllerDidFinish does not fire when swiping down to dismiss向下滑动以关闭时,SafariViewControllerDidFinish 不会触发
【发布时间】:2020-06-01 15:30:47
【问题描述】:

我在SFSafariViewController 上有一个委托,负责清理safariViewControllerDidFinish 事件中的任务。在 iOS 13+ 中,用户可以向下滑动以关闭,但在这种情况下不会触发此事件。我不想通过启用isModalInPresentation 来禁用此手势。

有没有办法让safariViewControllerDidFinish 在这种情况下触发,或者我如何检测用户向下滑动以关闭 Safari 视图控制器?

【问题讨论】:

    标签: ios sfsafariviewcontroller sfsafariviewcontrollerdelegate


    【解决方案1】:

    您可以通过将自己设为演示控制器的委托并覆盖presentationControllerDidDismiss(_:) 来了解用户何时关闭SFSafariViewController。查看有关此主题的 documentation

    注意:如果您以编程方式使用dismiss(animated:),则不会调用此方法。

    【讨论】:

      【解决方案2】:

      @Frankenstein 的回答对我有用,但我花了一段时间才能正确设置我的代码,所以只想在此处添加一些代码 sn-ps

      class MyViewController: UIViewController {
      
        func presentSafariVC() {
          let url = //...
          let config = SFSafariViewController.Configuration()
          let safariVC = SFSafariViewController(url: url, configuration: config)
          safariVC.modalPresentationStyle = .formSheet
          safariVC.delegate = self
          safariVC.presentationController?.delegate = self
          present(safariVC, animated: true)
        }
      
      }
      
      extension MyViewController: SFSafariViewControllerDelegate, UIAdaptivePresentationControllerDelegate {
      
        // click top left "Done" button and dismissed
        func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
              // do your stuff
        }
          
        // swipe down and dismissed
        func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
              // do your stuff
        }
      
      }
      

      另外,我原本是在寻找一种方法来防止向下滑动以关闭呈现的 vc,但似乎设置 safariVC.isModalInPresentation = true 没有效果,我仍然可以向下滑动以关闭它。这是在 XCode 12、iOS 14.2 模拟器上观察到的。

      【讨论】:

      • 和你一样的问题。这应该是公认的答案。谢谢!
      猜你喜欢
      • 2020-09-20
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 2016-12-13
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      相关资源
      最近更新 更多