我正在开发一个应用程序,用户可以选择是否要扫描条形码或拍摄某些内容。
为了拍照,我像往常一样使用UIImagePickerController
。
对于扫描条形码,我使用的是ZbarSDK 1.2 ZBarReaderViewController
。
拍照时一切都很完美。 扫描条形码时: 如果您启动应用并扫描条形码之前拍照,那么它也可以完美呈现。
但是你拍照,然后回去尝试扫描条形码,相机失去了自动对焦,而且扫描条形码是不可能的。
总结:
开始 - >扫描 - > 自动对焦
开始 - >拍照 - >返回 - >扫描 - > 自动对焦无法正常工作
这是我初始化条形码扫描仪的方式:
-(ZBarReaderViewController *) barcodeScanner
{
if (nil == _barcodeScanner)
{
_barcodeScanner = [ZBarReaderViewController new];
_barcodeScanner.readerDelegate = self;
_barcodeScanner.cameraMode = ZBarReaderControllerCameraModeSampling;
_barcodeScanner.sourceType = UIImagePickerControllerSourceTypeCamera;
}
return _barcodeScanner;
}
有什么想法吗?
答案 0 :(得分:4)
在加载ZBarReaderViewController之前,请确保释放UIImagePickerController,并在加载UIImagePickerController之前确保释放ZBarReaderViewController。
我花了几天时间弄清楚为什么我一直失去专注的能力,结果证明我没有发布东西。对于其他人来说,这个答案磕磕绊绊......你一次只能拥有1个AVCaptureSession,否则会让事情变得棘手而你失去了专注的能力。 ZBarReaderViewController使用AVCaptureSession,因此请确保在初始化新的AVCaptureSession之前将其释放。
答案 1 :(得分:1)
我们遇到了与Zbar相同的问题,我们通过在解除模型视图之前延迟2秒来解决它。
答案 2 :(得分:0)
我会更深入地了解您拍照的实施情况。尝试拍摄照片时,请检查是否正确关闭了资源。我不认为zBar实现与它有任何关系......