我们正在使用 ZBarSDK 的 1.2 版(并尝试 beta 1.3.1)在我们的应用程序中读取条形码。我们使用这段代码已经有一段时间了,在 iOS 5 和 6 中没有任何问题,但 iOS 7 似乎在初始化相机时出现了一些问题。当我们在 ZBarReaderView 中调用 start 方法时,初始化相机需要 30 到 60 秒甚至更长的时间。用户一直看到一个黑色的摄像头视图,他们想知道该应用程序是否有效。
视图初始化后,我们可以关闭它并重新打开它任意次数,没有任何问题,它会迅速打开。
这是我们代码的相关部分:
- (void)showAnimated:(BOOL)animated
{
[self.controller overlayWillShow:self];
dispatch_async(dispatch_queue_create(0, 0), ^{[self.zBarReaderView start];});
CGRect frame = self.superview.frame;
frame.origin.y = -hiddenYOrigin;
[UIView animateWithDuration:0.4 animations:^{
self.superview.frame = frame;
} completion:^(BOOL finished){
if (((ScanController *)self.controller).scanMode == ScanModeManualEntry) {
[self.manualEntryTextField becomeFirstResponder];
}
self.showing = YES;
[self.controller overlayDidShow:self];
}];
}
所有这些代码都快速执行,但是对 ZBarReaderView start 的 dispatch_queue_create 调用是我们被挂断很长时间的地方。
有任何想法吗?