Skip to main content

Advanced Configurations

MatrixScan Find is optimized by default for efficiency, accuracy, and a seamless user experience. However, there are multiple advanced settings available to further customize MatrixScan Find to best fit your needs.

BarcodeFind Listener

You may want more fine-grained knowledge over the different events happening during the life of the BarcodeFind mode, such as when the search starts, pauses, and stops.

To do this, you can directly register a SDCBarcodeFindListener on the mode itself, keeping in mind that these listeners are called from a background thread.

mode.addListener(self)

extension PlaygroundViewController: BarcodeFindListener {
func barcodeFind(_ barcodeFind: BarcodeFind,
didPauseSearch foundItems: Set<BarcodeFindItem>) {
// The mode was paused
}

func barcodeFindDidStartSearch(_ barcodeFind: BarcodeFind) {
// The mode was started
}

func barcodeFind(_ barcodeFind: BarcodeFind,
didStopSearch foundItems: Set<BarcodeFindItem>) {
// The mode was stopped
}
}

Set Up a Transformation

Sometimes the barcode data needs to be transformed. For example, if the barcode contains the product identifier and other information, when a product is scanned, the barcode data is first parsed (via a transformation) and then the input list is checked.

First conform to the SDCBarcodeFindTransformer protocol. For example, if you want to only consider the first 5 characters:

class Transformer: NSObject, BarcodeFindTransformer {
func transformBarcodeData(_ data: String) -> String? {
return String(data.prefix(5))
}
}

Then the transformer needs to be set so it can be used by Barcode Find:

barcodeFind.setBarcodeTransformer(Transformer())

UI Customization

The SDCBarcodeFindView by default shows a set of UI elements, any of which can be optionally hidden:

  • Play/Pause button
  • Finish button
  • Searched items carousel
  • Guidance hints
  • Progress bar (hidden by default)

Each of these elements can be shown or hidden as needed. For example:

barcodeFindView.shouldShowCarousel = false
barcodeFindView.shouldShowProgressBar = true