1

我在导航控制器的堆栈中有 3 个 ViewController。在第三个 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以确保它不会干扰。)

4

1 回答 1

0

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

当您打电话ABAddressBookRequestAccessWithCompletion询问通讯簿的权限时,您的应用程序似乎处于“非活动”状态(对话框打开时)。

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

- (void)applicationDidBecomeActive:(UIApplication *)application

将被调用。

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

于 2016-09-27T08:31:02.930 回答