我正在开发一个应用程序,用户可以选择是否要扫描条形码或拍照。
为了拍照,我像往常一样使用 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 之前释放它。
关于使用 ZBarSDK 时 iPhone 相机失去自动对焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8658383/