我正在开发一个应用程序,用户可以选择是否要扫描条形码或拍摄某些东西的图片。
为了拍照,我通常使用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之前将其释放。