首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法选择iOS 8上的联系人

无法选择iOS 8上的联系人
EN

Stack Overflow用户
提问于 2014-09-24 19:09:47
回答 4查看 4.2K关注 0票数 5

我有一个ABPeoplePickerNavigationController子类来处理在我的应用程序中选择联系人电话号码。在iOS 7和更低版本上,一切都很好。

然而,在iOS 8上,我的ABPeoplePickerNavigationControllerDelegate在选择电话号码时不会被击中。相反,它只打那个电话号码。

我注意到,我在iOS 7 (peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier:)中处理联系人选择的方法在iOS 8中被废弃,取而代之的是peoplePickerNavigationController:didSelectPerson:property:identifier:

我知道设置了我的委托,因为我成功地接收了peoplePickerNavigationControllerDidCancel:方法回调。

还有其他人经历过这个问题吗?

下面是我的ABPeoplePickerNavigationController子类的代码片段:

代码语言:javascript
运行
复制
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {

    [self peoplePickerNavigationController:peoplePicker shouldContinueAfterSelectingPerson:person property:property identifier:identifier];
}

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {

    ...do stuff...

    return NO;
}

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {

    return YES;
}

- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker {

    [self dismissViewControllerAnimated:self.shouldAnimateDismiss completion:NULL];
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-09-24 20:12:09

您在哪里指定peoplePickerDelegate

在iOS 8中,如果在viewDidLoad中指定peoplePickerDelegate,您将体验到您描述的奇怪行为(cancel委托工作,didSelect...shouldContinue...没有)。如果您在peoplePickerDelegate之后(或期间)指定了init,那么它可以正常工作。

这似乎是iOS 8的“特性”。我会提交一份窃听器报告。

票数 6
EN

Stack Overflow用户

发布于 2014-12-03 10:22:18

以上两个委托方法在iOS 8.0中不推荐使用,使用最后两种方法来获得所需的结果

这是苹果开发者指南链接,为您提供更多关于

ABPeoplePickerNavigationControllerDelegate

票数 2
EN

Stack Overflow用户

发布于 2014-12-17 13:28:59

当我在IOS8中选择一个联系人时,不会发生任何事情。

我发现除了

代码语言:javascript
运行
复制
if ([picker respondsToSelector:@selector(setPredicateForSelectionOfPerson:)]) 
    {
         picker.predicateForSelectionOfPerson = [NSPredicate predicateWithFormat:@"emailAddresses.@count = 1"];
    }

我也需要

代码语言:javascript
运行
复制
if ([picker respondsToSelector:@selector(setPredicateForEnablingPerson:)])
    {
        picker.predicateForEnablingPerson = [NSPredicate predicateWithFormat:@"emailAddresses.@count > 0"];
    }

m.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26024611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档