ABPersonViewController 选择人后消失
Posted
技术标签:
【中文标题】ABPersonViewController 选择人后消失【英文标题】:ABPersonViewController disappear after selecting person 【发布时间】:2014-10-04 18:24:58 【问题描述】:我对 ABPersonViewController 有疑问。我使用 ABPeoplePickerNavigationControllerDelegate 来显示人员选择器(联系人列表)。当我选择一个人时,我想显示一个 ABPersonViewController。问题是 ABPersonViewController 在选择人员后消失了。详细 -> 我选择一个人 -> ABPersonViewController 出现(具有正确的属性) -> ABPersonViewController 立即消失,完整的人员选择器也消失了。我认为问题在于我将 PeoplePicker 推开。
我读了很多教程,但我不明白。我目前正在为 ios 8 开发。
大多数教程在 peoplepicker 的不同方法中调用 ABPersonViewController,但如果我在另一个委托方法中调用它,它就不起作用。
这是我的代码:
@interface ViewController : UIViewController<ABPeoplePickerNavigationControllerDelegate, ABPersonViewControllerDelegate>
- (BOOL)peoplePickerNavigationController:
(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
ABPersonViewController *picker = [[ABPersonViewController alloc] init];
picker.personViewDelegate = self;
picker.displayedPerson = person;
picker.displayedProperties = peoplePicker.displayedProperties;
picker.allowsActions = YES;
[peoplePicker pushViewController:picker animated:YES];
return NO;
提前谢谢你。
问候
【问题讨论】:
你为什么要显示你自己的ABPersonViewController
?如果您的ABPeoplePickerNavigationControllerDelegate
实施正确,ABPeoplePickerNavigationController
将自动为您显示联系方式。
好的,那么我的问题是如何设置 PersonViewController 的属性以及如何获取 PersonViewController 的选定属性
查看ABPeoplePickerNavigationController
的displayedProperties
属性。并实现正确的委托方法,以便在为特定联系人选择属性时得到通知。
好的,听起来不错。我会试试的(:
【参考方案1】:
在 iOS8 中,初始化 ABPeoplePickerNavigationController 时需要添加如下代码,否则 peoplePickerNavigationController 在选择联系人后会立即关闭。
if(IOS8_OR_LATER)
peoplePicker.predicateForSelectionOfPerson = [NSPredicate predicateWithValue:false];
另外,对于 iOS 8,使用
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
或
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person
代替
在选择人之后应该继续
因为这个方法在 iOS8 中已经被弃用了
【讨论】:
以上是关于ABPersonViewController 选择人后消失的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS8 上将 ABPersonViewController 推送到 ABPeoplePickerNavigationController
为啥我的 ABPersonViewController 没有显示所有属性?
ABPersonViewController 在推送到 PeoplePickerNavigationController 时未检索数据
如何在 iPhone 的横向模式下停止 ABPersonViewController 和 ABNewPersonViewController 的旋转