아이폰 프로그램 호출 시스템 통신록 단일 전화번호 선택

2366 단어
시스템의 통신록 인터페이스와 상응하는 기능을 호출하기 위해AddressBook을 도입해야 합니다.framework 및 AddressBookUI.framework,
또한 원본 파일에 같은 파일을 포함해야 합니다.
#import<AddressBook/AddressBook.h>
#import<AddressBookUI/AddressBookUI.h>

먼저 변수를 설명합니다.
ABPeoplePickerNavigationController *picker;

필요한 곳에서 선택 연락처 인터페이스를 호출하고 ABPeoplePickerNavigationControllerDelegate 의뢰를 설정합니다.
   picker = [[ABPeoplePickerNavigationController alloc] init];
   picker.peoplePickerDelegate = self;
   [self presentModalViewController:picker animated:YES];// showing the picker

아래의 방법은 사용자가 통신록 1급 목록의 어떤 항목을 선택할 때 호출된다. 개인을 통해 선택한 연락처의 모든 정보를 얻을 수 있지만 당선된 연락처는 여러 개의 번호가 있다. 우리는 사용자가 명확한 번호를 지정할 때(예를 들어 전화를 걸면) YES로 돌아가 연락처의 상세한 인터페이스에 통신록이 들어갈 수 있도록 한다.
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
        shouldContinueAfterSelectingPerson:(ABRecordRef)person {
             NSLog(@"                ");
             return YES;
}

사용자가 어떤 필드를 눌렀을 때 다음과 같은 방법을 사용합니다.연락처 정보에는 많은 필드가 있을 수 있으므로 먼저 선택한 필드가 전화번호 필드인지 아닌지를 판단해야 한다.요구 사항이 충족되면 연락처 정보를 얻고 식별자를 통해 사용자가 선택한 번호가 이 연락처 번호 목록에 있는 색인을 얻으며 마지막으로 색인을 통해 선택한 전화번호를 얻는다.
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker
      shouldContinueAfterSelectingPerson:(ABRecordRef)person
                                property:(ABPropertyID)property
                              identifier:(ABMultiValueIdentifier)identifier
{
    if (property == kABPersonPhoneProperty) {
        ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, property);
        int index = ABMultiValueGetIndexForIdentifier(phoneMulti,identifier);
        NSString *phone = (NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, index);
        //do something
        
        [phone release];
        [peoplePicker dismissModalViewControllerAnimated:YES];
    }
    return NO;
}

마지막으로 다음과 같은 방법으로 사용자가 "취소"단추를 눌렀을 때 연락처 선택 인터페이스를 닫도록 해야 한다.
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
    [peoplePicker dismissModalViewControllerAnimated:YES];
    NSLog(@"     ");
}

좋은 웹페이지 즐겨찾기