card.io не сканирует

пытаюсь интегрировать Card.io (v. 5.1.1) в свое приложение и сталкиваюсь с очень странной проблемой с iPhone4 iOS v. 7.1.2. При запуске камеры:

  1. он не делает автофокус камеры
  2. если я чем-то накрываю камеру, она не включает вспышку
  3. когда я помещаю карту в зеленую рамку, она ничего не делает. не появляются вертикальные/горизонтальные линии. только иногда лагает экран

странно то, что когда я устанавливаю card-io-sampleApp, он отлично работает на том же устройстве с теми же картами. убер кардио тоже отлично работает. добавление контроллера card-io-sampleApp в мое приложение не имело никакого значения.

    (IBAction)scanButtonPressed:(id)sender
{
    CardIOPaymentViewController *scanViewController = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:self];
    scanViewController.disableManualEntryButtons = YES;
    scanViewController.suppressScanConfirmation = YES;
    scanViewController.scannedImageDuration = 0.5f;
    scanViewController.collectExpiry = NO;
    scanViewController.scanExpiry = NO;

    [self presentViewController:scanViewController animated:YES completion:nil];
}

(void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)scanViewController
{
    [scanViewController dismissViewControllerAnimated:YES completion:nil];
}

 (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo )info inPaymentViewController:(CardIOPaymentViewController )scanViewController
{
    if (info.cardNumber.length > 0) {
        self.numberField.text = info.cardNumber;
    }
    [scanViewController dismissViewControllerAnimated:YES completion:nil];
}

что мне не хватает? приложение также использует камеру для сканирования QR-кода. это может быть проблемой? может еще какой конфликт?

Спасибо!


person mikhail    schedule 16.09.2015    source источник


Ответы (1)


Я выяснил, что могло вызвать такое поведение на iOS 7

Если у вас где-то есть бесконечная анимация, вы создаете CardIOPaymentViewController, она не будет работать должным образом.

Фрагмент кода, вызывающий проблему

- (void)animate:(UIView *)v
{

        [UIView animateWithDuration:.8 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^ {
           // some animation
        } completion:^(BOOL finished) {
               [self animate:v];
        }];
}

Итак, остановите анимацию, когда вы подносите сканер или когда контроллер исчезает.

- (void) viewDidDisappear:(BOOL)animated {
    // stop animation here
}

Надеюсь это поможет

person Doro    schedule 16.09.2015
comment
Да, это было проблемой! Спасибо! - person mikhail; 21.09.2015
comment
У меня такая же проблема, но как реализовать это решение, я не использую анимацию в этом контроллере. - person Ashiwani; 17.02.2016
comment
@Ashiwani, что-то блокирует ваш основной поток, поэтому камера не может сфокусироваться. Проверьте свой код - по крайней мере, создайте пустой пример проекта и убедитесь, что код для cardIO работает. чем вернуться в свой проект и прокомментировать весь код, который не принадлежит cardIO - person Doro; 17.02.2016