我正在使用ZXingObjC
从我的iOS Swift
应用程序中的实时摄像机源进行扫描(使用此示例代码)。我想限制ZXing将寻找或返回的可用条形码类型。具体来说,我希望它忽略除阿兹特克代码之外的任何内容。目前,它总是将我的演示代码检测为 UPCE,我希望防止这种情况发生。
似乎有一种方法可以通过Android上的Intents来做到这一点,但我不确定如何为iOS/ZXingObjC做到这一点。有人可以指出我正确的方向吗?我可以向 func captureResult(capture: ZXCapture, result: ZXResult, barcodeFormat: String?)
还是我必须改变ZXCapture
的称呼方式?
任何帮助,不胜感激。
在ZXDecodeHints
类中,您可以使用这些方法来添加或删除扫描程序识别的格式。
- (void)addPossibleFormat:(ZXBarcodeFormat)format;
- (BOOL)containsFormat:(ZXBarcodeFormat)format;
- (int)numberOfPossibleFormats;
- (void)removePossibleFormat:(ZXBarcodeFormat)format;
以便您可以删除不需要的格式:
[hints removePossibleFormat:kBarcodeFormatQRCode]
以下是库使用的格式列表:
typedef enum {
/** Aztec 2D barcode format. */
kBarcodeFormatAztec,
/** CODABAR 1D format. */
kBarcodeFormatCodabar,
/** Code 39 1D format. */
kBarcodeFormatCode39,
/** Code 93 1D format. */
kBarcodeFormatCode93,
/** Code 128 1D format. */
kBarcodeFormatCode128,
/** Data Matrix 2D barcode format. */
kBarcodeFormatDataMatrix,
/** EAN-8 1D format. */
kBarcodeFormatEan8,
/** EAN-13 1D format. */
kBarcodeFormatEan13,
/** ITF (Interleaved Two of Five) 1D format. */
kBarcodeFormatITF,
/** MaxiCode 2D barcode format. */
kBarcodeFormatMaxiCode,
/** PDF417 format. */
kBarcodeFormatPDF417,
/** QR Code 2D barcode format. */
kBarcodeFormatQRCode,
/** RSS 14 */
kBarcodeFormatRSS14,
/** RSS EXPANDED */
kBarcodeFormatRSSExpanded,
/** UPC-A 1D format. */
kBarcodeFormatUPCA,
/** UPC-E 1D format. */
kBarcodeFormatUPCE,
/** UPC/EAN extension format. Not a stand-alone format. */
kBarcodeFormatUPCEANExtension
} ZXBarcodeFormat;
同样在ZXMultiFormatReader
类中,您应该删除存储不同格式的数组读取器中的对象。
[self.readers addObject:[[ZXQRCodeReader alloc] init]];
[self.readers addObject:[[ZXDataMatrixReader alloc] init]];
[self.readers addObject:[[ZXAztecReader alloc] init]];
[self.readers addObject:[[ZXPDF417Reader alloc] init]];
[self.readers addObject:[[ZXMaxiCodeReader alloc] init]];
您应该删除这些您不需要的线路调用。