2013-02-08 60 views
4

让我先解释一下我想做什么。在最近通话选项卡原生的iPhone,如果你点击你有一个选项,任何地址簿中没有找到联系人“添加到现有联系人”Iphone ABUnknownPersonViewController using allowsAddingToAddressBook = YES issue

Iphone Recents Item

点击“添加到现有联系人”后,一个选择器出现,你做出选择。此后,它带给你,自动将ABPersonViewController,并允许您编辑或保存新联系人:

PersonViewController

我试图重建这一点,但有一些问题。在我的版本中,在创建UnknownPersonViewController并且最终用户按下“添加到现有联系人”之后,一个选取器出现并允许从类似于本地Iphone的地址簿中进行选择。但是在做出选择之后,名称会自动添加到地址簿中,并且没有任何personViewController会让用户选择是否添加联系人。即使我可以让它在选择后不自动写入地址簿,我也可以立即在编辑模式下显示一个personviewcontroller。

所以我的问题是为什么它会在选择后自动更新地址簿? Im将ABUnknownpersonviewcontroller推到UITableviewController navigationcontroller上。并在物理设备上的IM测试与iOS 6.01 下面是一些代码:

ABRecordRef person = ABPersonCreate(); 
ABMutableMultiValueRef multiValue = ABMultiValueCreateMutable(kABStringPropertyType); 
    ABMultiValueAddValueAndLabel(multiValue, call.number,  kABPersonPhoneMainLabel, 
           NULL); 
    ABRecordSetValue(person, kABPersonPhoneProperty, multiValue, error); 
    if(multiValue) CFRelease(multiValue); 


ABUnknownPersonViewController *unknownCtrl = [[ABUnknownPersonViewController alloc] init]; 
unknownCtrl.displayedPerson = person; //this has a phone number with "main" label 
unknownCtrl.allowsActions = YES; 
unknownCtrl.allowsAddingToAddressBook = YES; 
unknownCtrl.editing=NO; 
unknownCtrl.unknownPersonViewDelegate = self; 

    // unknownCtrl.addressBook=ABAddressBookCreate(); // I tried setting addressbook to nil and object 
unknownCtrl.addressBook=nil; 

[self setTitle:call.type forUIViewController:unknownCtrl]; 

[self.navigationController pushViewController:unknownCtrl animated:YES]; 

注:我也有类似的问题,这个帖子:http://forums.macrumors.com/archive/index.php/t-1023140.html

也许https://discussions.apple.com/thread/1682620?start=0&tstart=0

UPDATE:看起来如果我把kABPersonPhoneMainLabel从这个人那里,那么它不会把电话号码写到联系人。后来我做了doResolveToPerson委托,我在编辑模式下调用了personviewcontroller。这模拟了本地行为。这可以回答我自己的问题,谢谢大家。

+0

wt你想要?和wt是你的问题?告诉我排序..谢谢:) – iPatel 2013-02-08 15:21:21

+0

嗨,我的问题是,在我的代码上面,当用户按下“添加到现有的联系人”Iphone自动添加联系人选定的人,并不允许用户取消或编辑合并之前联系。简而言之,我不希望Iphone自动合并联系人,Iphone本身并不像这样。我想让Iphone调出一个ABPersonViewController并让用户选择取消保存合并的联系人。 – j2emanue 2013-02-08 15:24:27

回答

0

ABUnknownPersonViewController不公开许多自定义选项,您需要实现自己的版本。这并不难 - “创建新联系人”按钮只会启动ABNewPersonViewController,“添加到现有联系人”将启动ABPeoplePickerNavigationController。你的ViewController应该充当这些对象的委托并控制它们完成时发生的事情。