Почему вызывается ViewDidLoad, если я отменяю приглашение TouchID - PullRequest
0 голосов
/ 28 октября 2019

Когда я нажимаю «Отмена» в подсказке TouchID, подсказка исчезает и мгновенно появляется снова ... Мой метод биометрии вызывается из ViewDidLoad, я добавляю NSLog внутри ViewDidLoad, и он вызывается, когда я закрываю диалоговое окно TouchID. Я посмотрел и попробовал несколько примеров реализации TouchID, но все они приводят к одному и тому же результату.

  - (void)useBiometrics{
        LAContext* context = [[LAContext alloc] init];
        NSError* error = nil;
        NSString* result = @"Use Touch ID to login";


        if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {

            [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:result reply:^(BOOL success, NSError *error) {
                if (success) {

                    dispatch_async(dispatch_get_main_queue(), ^{


                        UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
                        LoginViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"ViewControllerROOTIdentifier"];
                        [self.navigationController pushViewController:loginController animated:NO];

                        FROM_LOGIN = YES;

                        NEEDS_LOGIN = FALSE;
                    });
                }
                else
                {

                    switch (error.code) {
                        case LAErrorSystemCancel:
                        {

                            break;
                        }
                        case LAErrorUserCancel:
                        {
                            NSLog(@"TouchID canceled");
                            break;
                        }
                        case LAErrorAuthenticationFailed:
                        {
                            break;
                        }
                        case LAErrorPasscodeNotSet:
                        {
                            break;
                        }
                        case LAErrorBiometryNotAvailable:
                        {
                            break;
                        }
                        case LAErrorBiometryNotEnrolled:
                        {
                            break;
                        }
                        case LAErrorUserFallback:
                        {
                            [[NSOperationQueue mainQueue] addOperationWithBlock:^{

                            }];
                            break;
                        }
                        default:
                        {
                            [[NSOperationQueue mainQueue] addOperationWithBlock:^{
                            }];
                            break;
                        }
                    }
                }
            }];
        }
        else
        {
            switch (error.code) {
                case LAErrorBiometryNotEnrolled:
                {
                    break;
                }
                case LAErrorPasscodeNotSet:
                {
                    NSLog(@"A passcode has not been set");
                    break;
                }
                default:
                {
                    NSLog(@"TouchID not available");
                    break;
                }
            }

        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...