アプリでバーコードを読み取るために、ZBarSDK のバージョン 1.2 (およびベータ 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 呼び出しで、長い間ハングアップします。
何か案は?