我正在开发一个应用程序,用户可以选择是否要扫描条形码或拍摄某些东西的图片。
为了拍照,我通常使用UIImagePickerController
为了扫描条形码,我使用了ZbarSDK 1.2 ZBarReaderViewController

拍照时,一切正常。
扫描条形码时:
如果您启动应用程序并在拍照之前扫描条形码,那么它也很完美。

但是,如果您要拍照,然后返回并尝试扫描条形码,则相机将失去自动对焦功能,因此根本无法扫描条形码。

总结一下:
开始->扫描-> 自动对焦工作
开始->拍照->返回->扫描-> 自动对焦不起作用

这是我初始化条形码扫描仪的方式:

-(ZBarReaderViewController *) barcodeScanner
{
    if (nil == _barcodeScanner)
    {
        _barcodeScanner = [ZBarReaderViewController new];
        _barcodeScanner.readerDelegate = self;
        _barcodeScanner.cameraMode = ZBarReaderControllerCameraModeSampling;
        _barcodeScanner.sourceType = UIImagePickerControllerSourceTypeCamera;
    }
    return _barcodeScanner;
}

有任何想法吗?

最佳答案

在加载ZBarReaderViewController之前,请确保释放UIImagePickerController,在加载UIImagePickerController之前,请确保释放ZBarReaderViewController。

我花了几天的时间弄清楚为什么我一直失去聚焦能力,结果证明我没有释放任何东西。对于其他绊倒这个答案的人...您一次只能拥有1个AVCaptureSession,否则事情会变得很棘手,您将失去聚焦的能力。 ZBarReaderViewController使用AVCaptureSession,因此请确保在初始化新的AVCaptureSession之前将其释放。

10-08 06:05