IOS не может читать QR-код на iphone5 или 4s, но 6, 6s в порядке

Я помещаю QR-код в UIImageView и использую системный метод для его чтения.
Он работает на iPhone6 или 6s, но не может ничего читать на iPhone5.

Кто-нибудь знает, как это исправить?


CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{ CIDetectorAccuracy : CIDetectorAccuracyHigh }];
NSArray *features = [detector featuresInImage:[CIImage imageWithCGImage:self.QRImageView.image.CGImage]];

1 ответ

  1. Выглядит Вам нужно будет использовать AVCaptureMetadataOutput.

    // Device
    self.device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    
    // Input
    self.input = [AVCaptureDeviceInput deviceInputWithDevice:self.device error:nil]
    
    // Output
    self.output = [[AVCaptureMetadataOutput alloc] init];
    [self.output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
    self.output.metadataObjectTypes = @[AVMetadataObjectTypeQRCode];
    
    // Session
    self.session = [[AVCaptureSession alloc] init];
    [self.session addInput:self.input];
    [self.session addOutput:self.output];  
    

    Другие люди отметили, что CIDetectorработает только на iPhone 5s и выше, iPad Air и выше.

    (справка по устройству: https://forums.developer.apple.com/thread/20887)