要求许可设置回导航堆栈

时间:2016-09-27 07:20:33

标签: ios objective-c addressbookui

我在导航控制器的堆栈中有3个ViewControllers。 在第三个ViewController上有一个按钮,可以在地址簿中添加联系人。

如果应用尚未使用且我第一次检查授权状态时按下此按钮,如果是not determined我正在请求ABAddressBookRequestAccessWithCompletion的许可。

当这个问题得到解答并且应用程序应该返回到导航堆栈中的最后一个VC时,它会将所有VC设置回来并返回到导航堆栈中的第一个VC。

这是故意的行为吗?

以防万一在这里要求许可的代码是有用的:

else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {

    // ask for access to address book.
    ABAddressBookRequestAccessWithCompletion(ABAddressBookCreateWithOptions(NULL, nil), ^(bool granted, CFErrorRef error) {
        if (!granted){
            NSLog(@"Addressbook access was denied");
            return;
        }
        NSLog(@"Addressbook access was authorized");
        //[self addContactToAddressbook];
    });

} 

(我暂时评论了电话addContactToAddressbook,以确保它不会干扰。)

1 个答案:

答案 0 :(得分:0)

只是为了完成这个(以防其他人偶然发现)。对此的重要见解是:

当您致电ABAddressBookRequestAccessWithCompletion要求获得地址簿的许可时,您的应用似乎处于状态"无效状态" (对话框启动时)。

连续地,当用户回答问题的方法时:

- (void)applicationDidBecomeActive:(UIApplication *)application

将被调用。

(在我的情况下,这会导致重置导航堆栈 - 这就是我提问的原因。)