讓我先解釋一下我想做什麼。在最近通話選項卡原生的iPhone,如果你點擊你有一個選項,任何地址簿中沒有找到聯繫人「添加到現有聯繫人」Iphone ABUnknownPersonViewController using allowsAddingToAddressBook = YES issue
點擊「添加到現有聯繫人」後,一個選擇器出現,你做出選擇。此後,它帶給你,自動將ABPersonViewController
,並允許您編輯或保存新聯繫人:
我試圖重建這一點,但有一些問題。在我的版本中,在創建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。這模擬了本地行爲。這可以回答我自己的問題,謝謝大家。
wt你想要?和wt是你的問題?告訴我排序..謝謝:) – iPatel 2013-02-08 15:21:21
嗨,我的問題是,在我的代碼上面,當用戶按下「添加到現有的聯繫人」Iphone自動添加聯繫人選定的人,並不允許用戶取消或編輯合併之前聯繫。簡而言之,我不希望Iphone自動合併聯繫人,Iphone本身並不像這樣。我想讓Iphone調出一個ABPersonViewController並讓用戶選擇取消保存合併的聯繫人。 – j2emanue 2013-02-08 15:24:27