我有几个与地址簿和ABAddressBookRegisterExternalChangeCallback
相关的问题。
addressBook = ABAddressBookCreateWithOptions(NULL, &error);
我正在打开一个新的联系人记录,allowsEditing = YES
将其添加到
ABAddressBookAddRecord(addressBook, aContact,&anError)
ABAddressBookRegisterExternalChangeCallback(addressBook, changed, (__bridge void *)(self));
所有这些都不是在app delegate中完成的(我已经阅读了一条帖子,说明这可能是回调未被调用的原因)
是否必须在app delegate中完成?问题是因为这个联系人刚刚创建了吗? 但是,如果我也尝试将app delegate调用:
ab = ABAddressBookCreateWithOptions(NULL, &error);
ABAddressBookRegisterExternalChangeCallback(appABChanged, ab, (__bridge void *)(self));
应用程序崩溃。
在控制器中单击DONE按钮时,是否有其他方式可以获得通知? 我不关心AB的变化,我只是想使用内置的联系人编辑功能,我真正关心的是ABRecordRef。
我想我想说的是我真正需要的是ABPersonViewController通知DONE点击按钮并接收修改过的ABrecordRef希望带有一个标志,如果它实际被修改过。
答案 0 :(得分:1)
首先你注册例如在didFinishingLunching中你使用这个函数注册:
ABAddressBookRef book = ABAddressBookCreate();
ABAddressBookRegisterExternalChangeCallback(book, addressBookChanged, self);
当您更改本机联系人的记录时,您会收到使用此功能的通知:“
void addressBookChanged(ABAddressBookRef addressBook, CFDictionaryRef info, void *context) {
NSLog(@"Recevied notification");
}