Ios 我在iPhone中安装了应用程序it';没关系。应用程序没有bug,但它没有';我不能做QR阅读器
替换Ios 我在iPhone中安装了应用程序it';没关系。应用程序没有bug,但它没有';我不能做QR阅读器,ios,swift,Ios,Swift,替换 import UIKit import AVFoundation class ViewController: UIViewController , AVCaptureMetadataOutputObjectsDelegate { @IBOutlet weak var border: UIImageView! var video = AVCaptureVideoPreviewLayer() override func viewDidLoad() {
import UIKit
import AVFoundation
class ViewController: UIViewController , AVCaptureMetadataOutputObjectsDelegate {
@IBOutlet weak var border: UIImageView!
var video = AVCaptureVideoPreviewLayer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let session = AVCaptureSession()
//creat capture device
let capturedevice = AVCaptureDevice.default(for:AVMediaType.video) //////////ممکنه مشکل از این باشه
do {
let input = try AVCaptureDeviceInput (device:capturedevice!)
session.addInput(input)
}
catch{
print ("error baby !!!")
}
let output = AVCaptureMetadataOutput()
session.addOutput(output)
output.setMetadataObjectsDelegate(self, queue:DispatchQueue.main)
output.metadataObjectTypes = [AVMetadataObject.ObjectType.qr]//////////////////ممکنه مشکل از این باشه
video = AVCaptureVideoPreviewLayer(session:session)
video.frame = view.layer.bounds
view.layer.addSublayer(video)
self.view.bringSubviewToFront(border)
session.startRunning()/////////////good good
}
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!){
if metadataObjects != nil && metadataObjects.count != 0
{
if let object = metadataObjects[0] as? AVMetadataMachineReadableCodeObject
{
if object.type == AVMetadataObject.ObjectType.qr
{
let alert = UIAlertController(title:"QRScanner", message:object.stringValue, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "retake", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "copy", style: .default, handler: {(nil)in
UIPasteboard.general.string = object.stringValue
}))
present (alert,animated: true , completion: nil)
}
}
}
}
}
使用正确的委托方法
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!){
点击这个链接。希望你能得到错误
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {