我有一个ABPeoplePickerNavigationController
子类来处理在我的应用程序中选择联系人电话号码。在iOS 7和更低版本上,一切都很好。
然而,在iOS 8上,我的ABPeoplePickerNavigationControllerDelegate
在选择电话号码时不会被击中。相反,它只打那个电话号码。
我注意到,我在iOS 7 (peoplePickerNavigationController:shouldContinueAfterSelectingPerson:property:identifier:
)中处理联系人选择的方法在iOS 8中被废弃,取而代之的是peoplePickerNavigationController:didSelectPerson:property:identifier:
。
我知道设置了我的委托,因为我成功地接收了peoplePickerNavigationControllerDidCancel:
方法回调。
还有其他人经历过这个问题吗?
下面是我的ABPeoplePickerNavigationController
子类的代码片段:
- (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];
}
发布于 2014-09-24 20:12:09
您在哪里指定peoplePickerDelegate
?
在iOS 8中,如果在viewDidLoad
中指定peoplePickerDelegate
,您将体验到您描述的奇怪行为(cancel委托工作,didSelect...
和shouldContinue...
没有)。如果您在peoplePickerDelegate
之后(或期间)指定了init
,那么它可以正常工作。
这似乎是iOS 8的“特性”。我会提交一份窃听器报告。
发布于 2014-12-03 10:22:18
以上两个委托方法在iOS 8.0中不推荐使用,使用最后两种方法来获得所需的结果
这是苹果开发者指南链接,为您提供更多关于
发布于 2014-12-17 13:28:59
当我在IOS8中选择一个联系人时,不会发生任何事情。
我发现除了
if ([picker respondsToSelector:@selector(setPredicateForSelectionOfPerson:)])
{
picker.predicateForSelectionOfPerson = [NSPredicate predicateWithFormat:@"emailAddresses.@count = 1"];
}
我也需要
if ([picker respondsToSelector:@selector(setPredicateForEnablingPerson:)])
{
picker.predicateForEnablingPerson = [NSPredicate predicateWithFormat:@"emailAddresses.@count > 0"];
}
https://stackoverflow.com/questions/26024611
复制相似问题