QLPreviewController Blinks on Previewing Some PDF files

QLPreview keeps blinking and stops previewing the file when opening some high-resolution PDF files with heavy content. This can only be simulated in a real device built in xcode simulators cant simulate the issue. Tested in Xcode Version 15.4 (15F31d) and iPadOS Version 17.5.1.

Following is My Sample code :

import UIKit import QuickLook

class ViewController: UIViewController { var currentViewFilePath = "" let preview = QLPreviewController() override func viewDidLoad() { super.viewDidLoad() self.setupQLPreview() loaddata() // Do any additional setup after loading the view. }

func loaddata(){
    if let fileURL = Bundle.main.url(forResource: "CD28048D", withExtension: "pdf") {
        self.currentViewFilePath = fileURL.relativePath
        self.preview.reloadData()
        // Use the fileURL here
        print("File URL: \(fileURL)")
    } else {
        print("File not found")
    }
}

}

extension ViewController:QLPreviewControllerDelegate,QLPreviewControllerDataSource{

func setupQLPreview(){
    
    
    preview.delegate = self
    preview.dataSource = self
    
    self.view.addSubview(preview.view)
    let previewhight = (UIScreen.main.bounds.height - ((self.navigationController?.navigationBar.frame.height ?? 0)))
    
    preview.view.translatesAutoresizingMaskIntoConstraints = false
    preview.view.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
    preview.view.leftAnchor.constraint(equalTo:  self.view.leftAnchor,constant: 4).isActive = true
    preview.view.rightAnchor.constraint(equalTo:  self.view.rightAnchor,constant: -4).isActive = true
    preview.view.leadingAnchor.constraint(equalTo:  self.view.leadingAnchor,constant: 4).isActive = true
    preview.view.trailingAnchor.constraint(equalTo:  self.view.trailingAnchor,constant: -4).isActive = true
    preview.view.widthAnchor.constraint(equalToConstant:  self.view.frame.width-8).isActive = true
    preview.view.heightAnchor.constraint(equalToConstant: previewhight-4).isActive = true
    preview.view.bottomAnchor.constraint(equalTo:  self.view.bottomAnchor).isActive = true
    preview.navigationController?.isNavigationBarHidden = true
    self.addChild(preview)
    
    preview.didMove(toParent: self)
}


func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
    if self.currentViewFilePath.isEmpty || self.currentViewFilePath == ""{
        return 0
    }else{
        return 1
    }
    
}


func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
    let fileUrl = URL(fileURLWithPath:  self.currentViewFilePath)
    return fileUrl as QLPreviewItem
}

}

while running the above code Xcode debugger prints following errors: View service did terminate with error:

  • Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted} #Remote

  • Preview collection viewServiceDidTerminateWithError: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted} #Remote

  • [u 0AA9D4C5-BBA1-56F6-8FFF-F5F56B99399A:m (null)] [com.apple.quicklook.extension.previewUI(1.0)] Connection to plugin invalidated while in use.

QLPreviewController Blinks on Previewing Some PDF files
 
 
Q