The callback functions are sometimes not called

There was a change in how the bindings for weakly referenced delegates work around iOS 9 that can cause this problem if the device is low on memory. To avoid the problem you need to make sure that you have a reference to the delegate as long as the picker is used. For this simply create a class variable of your delegate:

public partial class ScanditSDKDemoViewController : UIViewController {
private SIBarcodePicker picker;
private PickerScanDelegate scanDelegate;

Assign the delegate to this class variable first and then also to the overlay controller's delegate variable:

scanDelegate = new PickerScanDelegate(this);
picker.ScanDelegate = scanDelegate;