仕事でQRコードを使ったアプリ開発の案件があったので、
以下のサイトを参考して、サンプルを作成していたが、
そのままでは、うまくいかなかった
iOSアプリ開発でZXingObjCを使ってQRコードを読み取る
ZXingObjC は、最新の3.0.1を使用
まず、
ViewController.h
# import <ZXingObjC/ZXingObjC.h>
ここで、「file not found」エラーが出たので、
Xcodeのヘッダー検索パスに、
「ZXingObjC」のフォルダまでのパスを入れる
私は、サンプルプロジェクトの直下にいれたので、
以下のように設定しました。
$(SRCROOT)/ZXingObjC-master
これで、ビルドは出来るようになったが、
QRコードを読み取ろうとしても
ZXCaptureDelegate のデリゲートメソッド
ZXCaptureDelegate.h
- (void)captureResult:(ZXCapture *)capture result:(ZXResult *)result;
が反応しない。
ソースを追っていくと、
ZXCapture.m の
ZXCapture.m
if (NSClassFromString(@"ZXMultiFormatReader")) {
_reader = [NSClassFromString(@"ZXMultiFormatReader") performSelector:@selector(reader)];
}
この部分で、if文の中に入って来てない。
つまり、ZXMultiFormatReader クラスが読みに行けてない。
いろいろ調べてると、
NSClassFromStringを利用して、静的ライブラリからクラスをインスタンス化しようとしてnilが帰ってくる場合
こういうことだったみたい。
これで、無事にQRコードの読み取りがちゃんと出来るようになりました!