2013-10-26 4 views
1

Всякий раз, когда пользователь нажимает OK на разрешение адресной книги UIAlertView, все идет хорошо, за исключением задержки выполнения этих команд, странно, что для выполнения этих команд требуется около 5 секунд, хотя распечатывается NSLog мгновенно.Завершение выполнения кода после разрешения адресной книги

Тот же код работает мгновенно в разрешении календаря.

Может кто-нибудь, пожалуйста, помогите мне здесь? Спасибо.

код, который выполняется после задержки (5 секунд)

NSLog(@"Granted!"); 
_1234.backgroundColor = [UIColor lightGrayColor]; 
[_12345 setHidden:NO]; 
[ _qwerty setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; 
[_qwerty1 setHidden:YES]; 

Полная функция

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions (NULL, NULL);

если (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {

ABAddressBookRequestAccessWithCompletion (addressBookRef,^(BOOL получил, CFErrorRef ошибка) {

если (ошибка)

 { 
      // display error message here 
     } 

еще если (! Предоставляется)

 { 
      // display access denied error message here 

     } 
     else 
     { 
      NSLog(@"Granted!"); //this gets printed instantly 

      _qwerty.userInteractionEnabled = NO; 

      _1234.backgroundColor = [UIColor lightGrayColor]; 
      [_12345 setHidden:NO]; 
      [ _qwerty setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; 
      [_qwerty1 setHidden:YES]; 

      [self qwerty4]; 
     } 



    }); 
} 

ответ

1

ваша задержка, вероятно, потому, что блок завершения не выполняется в главном потоке, и все операции UI должен быть выполненные в основном потоке, отправьте свой код пользовательского интерфейса в основном потоке следующим образом:

dispatch_async(dispatch_get_main_queue(), ^{ 

    NSLog(@"Granted!"); //this gets printed instantly 

    _qwerty.userInteractionEnabled = NO; 

    _1234.backgroundColor = [UIColor lightGrayColor]; 
    [_12345 setHidden:NO]; 
    [ _qwerty setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; 
    [_qwerty1 setHidden:YES]; 

    [self qwerty4]; 
}); 
Смежные вопросы