[英]How to dismiss camera controller from framework in iOS Swift?
我已經在框架內實現了視覺文檔掃描儀。 當調用相機視圖控制器並捕獲文檔時。 當點擊保存按鈕時,它應該關閉並返回到 viewController。
這是框架內的代碼:
public func showScanner(){
self.createTaskController()
// let scannerViewController = VNDocumentCameraViewController()
// scannerViewController.delegate = self
// present(scannerViewController, animated: true)
print("Called Build")
}
private func createTaskController(){
let scannerViewController = VNDocumentCameraViewController()
scannerViewController.delegate = self
self.clientView?.addChild(scannerViewController)
self.clientView?.view.addSubview(scannerViewController.view)
scannerViewController.didMove(toParent: clientView)
scannerViewController.dismiss(animated: true)
}
public func imageFromFile(result: @escaping (_ image: UIImage?) -> Void){
//the image
if imageNew != nil {
result(imageNew)
}
else{
//callback nil so the app does not pause infinitely if
//the error != nil
result(nil)
}
}
public func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {
guard scan.pageCount >= 1 else {
controller.dismiss(animated: true)
return
}
let originalImage = scan.imageOfPage(at: 0)
let newImage = compressedImage(originalImage)
imageNew = newImage
print("new image::\(newImage.size)")
print("new imagei::\(newImage)")
controller.dismiss(animated: true)
}
public func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFailWithError error: Error) {
print(error)
controller.dismiss(animated: true)
}
public func documentCameraViewControllerDidCancel(_ controller: VNDocumentCameraViewController) {
controller.dismiss(animated: true)
}
func compressedImage(_ originalImage: UIImage) -> UIImage {
guard let imageData = originalImage.jpegData(compressionQuality: 1),
let reloadedImage = UIImage(data: imageData) else {
return originalImage
}
return reloadedImage
}
這是我在示例項目中調用框架的代碼:
@IBAction func btnAction(_ sender: Any) {
A8Scan(self).showScanner()
p()
}
我的問題是當點擊保存按鈕時它應該關閉相機控制器(VNDocumentCameraViewController)並返回到示例應用程序。 但是,就我而言,它不會回來。
任何幫助非常感謝請...
你把它作為一個孩子在這里添加
let scannerViewController = VNDocumentCameraViewController()
private func createTaskController(){
scannerViewController.delegate = self
self.clientView?.addChild(scannerViewController)
self.clientView?.view.addSubview(scannerViewController.view)
scannerViewController.didMove(toParent: clientView)
/// scannerViewController.dismiss(animated: true) remove this line
}
然后刪除做
scannerViewController.removeFromParent()
scannerViewController.view.removeFromSuperView()
或者
private func createTaskController(){
let scannerViewController = VNDocumentCameraViewController()
scannerViewController.delegate = self
self.clientView?.present(scannerViewController,animated:true,completion:nil)
}
解雇
controller.dismiss(animated: true)
要發送圖像,請在 clientView 中創建一個函數並調用它
let newImage = compressedImage(originalImage)
self.clientView?.sendImage(newImage)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.