Skip to content

Commit a199c82

Browse files
committed
Separate extension for UIImagePickerControllerDelegate
1 parent 1ee6f7c commit a199c82

File tree

1 file changed

+44
-40
lines changed

1 file changed

+44
-40
lines changed

Sources/CodeScanner/ScannerViewController.swift

Lines changed: 44 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import UIKit
1212
@available(macCatalyst 14.0, *)
1313
extension CodeScannerView {
1414

15-
public class ScannerViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIAdaptivePresentationControllerDelegate {
15+
public class ScannerViewController: UIViewController, UINavigationControllerDelegate, UIAdaptivePresentationControllerDelegate {
1616
private let photoOutput = AVCapturePhotoOutput()
1717
private var isCapturing = false
1818
private var handler: ((UIImage) -> Void)?
@@ -56,45 +56,6 @@ extension CodeScannerView {
5656
openGallery()
5757
}
5858

59-
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
60-
isGalleryShowing = false
61-
62-
if let qrcodeImg = info[.originalImage] as? UIImage {
63-
let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyHigh])!
64-
let ciImage = CIImage(image:qrcodeImg)!
65-
var qrCodeLink = ""
66-
67-
let features = detector.features(in: ciImage)
68-
69-
for feature in features as! [CIQRCodeFeature] {
70-
qrCodeLink = feature.messageString!
71-
if qrCodeLink == "" {
72-
didFail(reason: .badOutput)
73-
} else {
74-
let corners = [
75-
feature.bottomLeft,
76-
feature.bottomRight,
77-
feature.topRight,
78-
feature.topLeft
79-
]
80-
let result = ScanResult(string: qrCodeLink, type: .qr, image: qrcodeImg, corners: corners)
81-
found(result)
82-
}
83-
84-
}
85-
86-
} else {
87-
print("Something went wrong")
88-
}
89-
90-
dismiss(animated: true, completion: nil)
91-
}
92-
93-
public func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
94-
isGalleryShowing = false
95-
dismiss(animated: true, completion: nil)
96-
}
97-
9859
public func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
9960
// Gallery is no longer being presented
10061
isGalleryShowing = false
@@ -520,6 +481,49 @@ extension CodeScannerView.ScannerViewController: AVCaptureMetadataOutputObjectsD
520481
}
521482
}
522483

484+
// MARK: - UIImagePickerControllerDelegate
485+
486+
extension CodeScannerView.ScannerViewController: UIImagePickerControllerDelegate {
487+
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
488+
isGalleryShowing = false
489+
490+
if let qrcodeImg = info[.originalImage] as? UIImage {
491+
let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyHigh])!
492+
let ciImage = CIImage(image:qrcodeImg)!
493+
var qrCodeLink = ""
494+
495+
let features = detector.features(in: ciImage)
496+
497+
for feature in features as! [CIQRCodeFeature] {
498+
qrCodeLink = feature.messageString!
499+
if qrCodeLink == "" {
500+
didFail(reason: .badOutput)
501+
} else {
502+
let corners = [
503+
feature.bottomLeft,
504+
feature.bottomRight,
505+
feature.topRight,
506+
feature.topLeft
507+
]
508+
let result = ScanResult(string: qrCodeLink, type: .qr, image: qrcodeImg, corners: corners)
509+
found(result)
510+
}
511+
512+
}
513+
514+
} else {
515+
print("Something went wrong")
516+
}
517+
518+
dismiss(animated: true, completion: nil)
519+
}
520+
521+
public func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
522+
isGalleryShowing = false
523+
dismiss(animated: true, completion: nil)
524+
}
525+
}
526+
523527
@available(macCatalyst 14.0, *)
524528
extension CodeScannerView.ScannerViewController: AVCapturePhotoCaptureDelegate {
525529

0 commit comments

Comments
 (0)