2016-04-22 94 views
0

我正在使用ZXingObjC從我的iOS Swift應用程序(使用this sample code)中的實時相機源掃描。我想限制ZXing將尋找的可用條碼類型,或者爲此返回。具體來說,我想它忽略任何東西,但阿茲特克代碼。目前它總是檢測我的演示代碼爲UPCE,並且我正在尋求防止這種情況。限制ZXing將檢測的條碼類型

似乎有一種方法可以通過意圖在Android上完成此操作,但我不確定如何爲iOS/ZXingObjC執行此操作。有人能指引我朝着正確的方向嗎? 我可以提供過濾器到 func captureResult(capture: ZXCapture, result: ZXResult, barcodeFormat: String?)或我必須改變ZXCapture的調用方式嗎?

任何幫助表示讚賞。

回答

0

ZXDecodeHints類中,您可以使用這些方法添加或刪除掃描程序識別的格式。

- (void)addPossibleFormat:(ZXBarcodeFormat)format; 
- (BOOL)containsFormat:(ZXBarcodeFormat)format; 
- (int)numberOfPossibleFormats; 
- (void)removePossibleFormat:(ZXBarcodeFormat)format; 

這樣就可以刪除的格式不希望:

[hints removePossibleFormat:kBarcodeFormatQRCode] 

這裏是由LIB所使用的格式列表:

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]]; 

你應該刪除你不想要的這些線路調用。

+0

謝謝!這聽起來不錯,但我無法讓它工作。我甚至改變了添加所有格式的循環,因此它只添加了一個(Aztec)'[result addPossibleFormat:[@ 0 intValue]];'但我的應用程序仍將UPCE報告爲檢測到的條碼類型。奇怪的。 – oelna