0

I added the QLPreviewController as a subview to my QLPreviewControllerWithDownloadView.

Then when I present my QLPreviewControllerWithDownloadView and have it preview an image, my QLPreviewControllerWithDownloadView view is dismissed immediately if any pan is detected on the image.

Any ideas on how to stop the view from dismissing on drag?

Sample Swift Project

Movie of Issue

Christopher
  • 1,327
  • 10
  • 17

1 Answers1

0

I fixed this by reversing my idea. Instead of adding the QLPreviewController as a subview I subclassed QLPreviewController and added my downloading view as a subview.

class QuickLookViewController: QLPreviewController {

//Download View Properties
var downloadViewController: DownloadFileViewController?

// MARK: - Application Life Cycle

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    guard let downloadView = self.downloadViewController?.view else { return }
    view.bringSubview(toFront: downloadView)
}

override func viewDidLoad() {
    super.viewDidLoad()
    addDownloadViewIfNeeded()
    downloadAndPreview()
}

// MARK: - Private

private func addDownloadViewIfNeeded() {
    guard self.downloadViewController == nil else { return }

    let downloadViewController = DownloadFileViewController.viewControllerFromStoryboard()
    downloadViewController.view.isHidden = true
    downloadViewController.delegate = self

    addChildViewController(downloadViewController)
    view.addSubview(downloadViewController.view)
    downloadViewController.view.pinFrameToSuperViewBounds()
    downloadViewController.didMove(toParentViewController: self)

    self.downloadViewController = downloadViewController
}

...
}
Christopher
  • 1,327
  • 10
  • 17