![](/img/trans.png)
[英]CNContactPickerViewController remove searchbar (Objective c)
[英]How to use CNContactPickerViewController with objective c?
嗨,我是iOS開發的新手。 我想從默認聯系人應用程序中選擇一個聯系人。 為此,我創建了一個應用程序,允許用戶從iPhone默認聯系人應用程序中選擇聯系人。 對於iOS 9+版本,我正在使用以下內容。
- (IBAction)btnAction:(id)sender {
CNContactPickerViewController *contactPicker = [[CNContactPickerViewController alloc] init];
contactPicker.delegate = self;
contactPicker.displayedPropertyKeys = (NSArray *)CNContactGivenNameKey;
[self presentViewController:picker animated:YES completion:nil];
}
-(void) contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact{
NSLog(@"Contact : %@",contact);
}
-(void)contactPickerDidCancel:(CNContactPickerViewController *)picker {
NSLog(@"Cancelled");
}
我還在uiviewcontroller中添加了CNContactPickerDelegate委托。 當我執行上述代碼時,它將打開聯系人應用程序,但是當點擊聯系人時,該應用程序將變為空白。
在此先感謝您,任何人都可以分享您的知識,以便在Objective-C中使用CNContactPickerViewController。
該問題是由以下代碼引起的:
contactPicker.displayedPropertyKeys = (NSArray *)CNContactGivenNameKey;
該displayedPropertyKeys期待一個NSArray
包含NSString
值。 在您的代碼中,您嘗試將NSString類型轉換為NSArray並將其設置為該屬性的值。
您需要將代碼更改為:
contactPicker.displayedPropertyKeys = @[CNContactGivenNameKey];
#pragma mark - CNContactPickerViewController Delegate method implementation
(void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact
{
NSMutableArray *contactNumberArray = [[NSMutableArray alloc]init];
selectedName=[NSString stringWithFormat:@"%@",contact.givenName];
NSLog(@"%@",selectedName);
NSString *tempString = [NSString stringWithFormat:@"name : %@ %@ %@\n",contact.givenName, contact.familyName, contact.organizationName];
// // 1. (Phone Numbers)
tempString = [NSString stringWithFormat:@"%@phoneNumbers : ",tempString];
// NSArray*phoneNumber = contact.phoneNumbers;
for (CNLabeledValue *phoneNumber in contact.phoneNumbers)
{
CNPhoneNumber *phone = phoneNumber.value;
tempString = [NSString stringWithFormat:@"%@<%@>",tempString,phone.stringValue];
[contactNumberArray addObject:phone];
selectedPhNumber=[[NSString stringWithFormat:@"%@",phone.stringValue] stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"%@",selectedPhNumber);
}
//2. (Emails)
tempString = [NSString stringWithFormat:@"%@\n Email : ",tempString];
for (CNLabeledValue *email in contact.emailAddresses)
{
selectedEmail=[NSString stringWithFormat:@"%@", email.value];
tempString = [NSString stringWithFormat:@"%@<%@>",tempString,email.value];
[contactNumberArray addObject:email];
NSLog(@"%@",selectedEmail);
}
[self sendRefferelDetailsToServer];
}
-(void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact *> *)contacts{
NSLog(@" %@",contacts);
CNContact *contact=[contacts objectAtIndex:0];
NSLog(@"name = %@",contact.givenName);
}
[1]: https : //i.stack.imgur.com/9Sp1G.png使用上面的代碼從多個選擇中獲取給定名稱,
評論以下行,然后重試。
//contactPicker.displayedPropertyKeys = (NSArray *)CNContactGivenNameKey;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.