每当用户在AddressBook权限OK
上按UIAlertView
时,除了延迟执行这些命令外,一切都很顺利,奇怪的是这些命令执行大约需要5秒,即使{ {1}}立即打印。
相同的代码会在“日历”权限中立即生效。
有人可以帮我吗?谢谢。
延迟(5秒)后正在执行的代码
NSLog
NSLog(@"Granted!");
完成功能
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL,NULL);
if(ABAddressBookGetAuthorizationStatus()== kABAuthorizationStatusNotDetermined){
ABAddressBookRequestAccessWithCompletion(addressBookRef,^(bool 授予,CFErrorRef错误){
if(error)
_1234.backgroundColor = [UIColor lightGrayColor]; [_12345 setHidden:NO]; [ _qwerty setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; [_qwerty1 setHidden:YES];
否则if(!grant)
{ // display error message here }
答案 0 :(得分:1)
你的延迟可能是因为主线程中没有执行完成块,并且必须在主线程中执行所有UI操作,在主线程中调度你的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];
});