2016-09-27 14 views
1

ナビゲーションコントローラのスタックに3つのViewControllerがあります。 3番目の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]; 
    }); 

} 

+1

ダイアログアプリに何を行うべきではありません。あなたは 'didEnterForeground'イベント(アプリケーションデリゲートメソッドまたは通知)に応答して何かをしていますか? – Paulw11

+0

いいえ、私が知っていることは何もありません。 'didEnterForeground'はありません。私は許可を求めているコードを表示するために質問を編集しました。答えとは関係なく、常に私のナビゲーションスタックの最初の画面に戻ってきます。 – Jens

+0

このコードはどのような機能ですか?要求は非同期で完了します。これに続くコードは何ですか?アクセスリクエストを完全に削除すると、アプリは何をしますか? – Paulw11

答えて

0

(私は一時的にそれが干渉しないことを確認するためにコールaddContactToAddressbookをコメントしている。):それはここに便利です念のために

は許可を求めるためのコードです(他人がこれに遭遇した場合に備えて)。

ABAddressBookRequestAccessWithCompletionに電話してアドレス帳のアクセス許可を求めると、あなたのアプリはステータスが「非アクティブ」になっているようです(ダイアログが表示されている間)。

】引き続き、ユーザーが質問に答える方法とき:

- (void)applicationDidBecomeActive:(UIApplication *)application 

が呼び出されますが。

(ナビゲーションスタックリセットに私の場合は、このリード - 。私の質問の理由だった)

関連する問題