我尝试使用新的CNContactPickerViewController iOS 9.0来选择目标-C中的联系人。我设置了委托并实现了CNContactPickerDelegate方法。
@import ContactsUI;
@import Contacts;
//-----------------------------------------------------------------------
- (void) presentContacts
{
CNContactPickerViewController *contactPicker = [[CNContactPickerViewController alloc] init];
contactPicker.delegate = self;
contactPicker.predicateForEnablingContact = [NSPredicate predicateWithFormat:@"familyName LIKE[cd] 'smith'"];
contactPicker.predicateForSelectionOfContact = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"];
[_myViewController presentViewController:contactPicker animated:YES completion:nil];
}
//-----------------------------------------------------------------------
- (void) contactPickerDidCancel: (CNContactPickerViewController *) picker
{
NSLog(@"didCancel");
}
//-----------------------------------------------------------------------
- (void) contactPicker: (CNContactPickerViewController *) picker
didSelectContact: (CNContact *) contact
{
NSLog(@"didSelectContact"):
}
//-----------------------------------------------------------------------
- (void) contactPicker: (CNContactPickerViewController *) picker
didSelectContactProperty: (CNContactProperty *) contactProperty
{
NSLog(@"didSelectProperty");
}
//-----------------------------------------------------------------------联系人选择器具有可选择的“smith”选项,但我得到以下消息:
设置了CNUI错误选择谓词,但委托没有实现contactPicker:didSelectContact:和contactPicker:didSelectContactProperty:。这些谓词将被忽略。。
我从来没有从委托方法中获得任何日志。它的行为与线完全一样。
contactPicker.delegate = self;被忽视了。即使我在选择器中单击“取消”按钮,我也没有收到"didCancel“消息,但我得到了另一条消息:
com.apple.MobileAddressBook.ContactsViewService插件失效
我在https://forums.developer.apple.com/thread/12275中发现了类似的问题,他解决了这个问题,并告诉我们:“所以我发现我调用的ContactsPicker在错误的模块中”,但我不明白我们如何得到错误的模块,以及如何调用“正确”模块。
我在模拟器和真实设备(iPad)上也有同样的问题。
发布于 2015-10-01 01:47:44
感谢Joel在我的相关问题With CNContactPickerViewController in iOS 9.0, how to enable/disable single or multiple selection?中,我发现我只是忘记将CNContactPickerViewController存储在用户进行选择的时间存在的属性中。
所以我的代码变成:
- (void) presentContacts
{
_contactPicker = [[CNContactPickerViewController alloc] init];
contactPicker.delegate = self;
...
}https://stackoverflow.com/questions/32802087
复制相似问题