ピープル ピッカーの紹介
ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController alloc] init];
peoplePicker.allowsActions = YES;
peoplePicker.allowsEditing = NO;
peoplePicker.peoplePickerDelegate = self;
[self presentViewController:peoplePicker animated:YES completion:nil];
iOS 7 での ABPeoplePickerNavigationControllerDelegate の実装
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
ABPersonViewController *personViewController = [[ABPersonViewController alloc] init];
personViewController.displayedPerson = person;
[peoplePicker pushViewController:personViewController animated:YES];
return NO;
}
ここまでは順調ですね。Person View Controller は期待どおりに表示されます。iOS7 メソッドは値を返します。ピープル ピッカーが開いたままであることを確認するために、NOを返すことができます。iOS8 では、上記のデリゲート メソッドは廃止され、新しいメソッドを実装する必要があります。
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person {
ABPersonViewController *personViewController = [[ABPersonViewController alloc] init];
personViewController.displayedPerson = person;
[peoplePicker pushViewController:personViewController animated:YES];
}
Person View Controller は People Picker にプッシュされますが、ほんの一瞬で People Picker が閉じられます (Person View Controller と一緒に)。
iOS8 で People Picker が消えないようにする方法はありますか? 他の提案はありますか?