Эта проблема только появилась с iOS 13 и ранее не была проблемой. Если я представляю контроллер UIPrintInteractionController
с одним изображением, все работает нормально. Если я отправлю более одного изображения, контроллер печати не будет отображаться, и вместо этого я получу сообщение об ошибке: Warning: Attempt to dismiss from view controller <UIViewController: 0x7fefcc4e7ab0> while a presentation or dismiss is in progress!
Ниже приведен код, о котором идет речь. Итак, еще раз, если printingItems
содержит более 1 элемента (что является всей его точкой), контроллер не будет отображаться, а часть success
обработчика завершения вернет false
. Не было проблемы в iOS 12. Это работает на iPad.
private func print(finalPageImages:[UIImage]) {
let printInfo = UIPrintInfo(dictionary: nil)
printInfo.jobName = "job name"
printInfo.outputType = .general
printInfo.duplex = .none
printInfo.orientation = .landscape
let printController = UIPrintInteractionController.shared
printController.showsNumberOfCopies = false
printController.printInfo = printInfo
printController.printingItems = finalPageImages
printController.present(from: self.printButton, animated: true) { (controller, success, error) in
guard error == nil else {
Utilities.displayAlert(title: "Print Error", msg: error!.localizedDescription, controller: self)
return
}
if success {
Utilities.displayAlert(title: "Print Status", msg: "Your Shelf Talkers are printing.", controller: self, completion: { (action) in
})
} else {
Utilities.displayAlert(title: "Print Error", msg: "There was a problem with this print job. Please try again.", controller: self)
}
}
}