测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最新发布 | 2016年3月 |
由赖志霄, Jesse Armand 维护。
ABPeoplePickerNavigationController的替代品,支持UILocalizedIndexedCollation。ZLPeoplePickerViewController最初是为了Talkly创建的。
ABPeoplePickerNavigationController不适用于多语言名称的联系人,也不适用于一些价值160亿美元的基于通讯录的应用。以下是一些示例
这才是它应该有的样子
请查看演示应用程序以获取示例。
ZLPeoplePickerViewController可以以类似于ABPeoplePickerNavigationController的方式初始化并推送到导航控制器。
self.peoplePicker = [[ZLPeoplePickerViewController alloc] init];
self.peoplePicker.delegate = self;
[self.navigationController pushViewController:self.peoplePicker animated:YES];
还有一个方便的方法可以以模态方式呈现人员选择器。
self.peoplePicker = [ZLPeoplePickerViewController presentPeoplePickerViewControllerForParentViewController:self];
加载大的通讯录可能会花费很长时间。因此,ZLPeoplePickerViewController在初始化后将其缓存到内存中。您可以通过预先使用以下类方法初始化通讯录来进一步减少首次延迟(例如,在viewDidLoad
中)。
+ (void)initializeAddressBook;
ZLPeoplePickerViewController使用fieldMask
属性来筛选联系人,使信息不完整的人变灰。
@property (nonatomic) ZLContactField filedMask;
numberOfSelectedPeople
属性控制多重选择行为。它表示选择器一次最多可以选择的人数。
@property (nonatomic) ZLNumSelection numberOfSelectedPeople;
ZLPeoplePickerViewController可以有一个可选的代理来接收回调。
- (void)peoplePickerViewController:(ZLPeoplePickerViewController *)peoplePicker didSelectPerson:(NSNumber *)recordId {
// show an ABPersonViewController
[self showPersonViewController:[recordId intValue] onNavigationController:peoplePicker.navigationController];
}
- (void)peoplePickerViewController:(ZLPeoplePickerViewController *)peoplePicker didReturnWithSelectedPeople:(NSArray *)people {
// people will be empty if no person is selected
if (!people || people.count==0) {return;}
[self presentViewController: [self alertControllerWithTitle:@"Return with selected people:" Message:[[self firstNameForPeople:people] componentsJoinedByString:@", "]] animated:YES completion:nil];
}
- (void)newPersonViewControllerDidCompleteWithNewPerson:(nullable ABRecordRef)person {
NSLog(@"Added a new person");
}
ZLPeoplePickerViewController
内部使用APAddressBook
来访问通讯录。它需要APAddressBook。
ZLPeoplePickerViewController在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。