iOS 8以上系统调用通讯录与属性选择

需积分: 9 4 下载量 22 浏览量 更新于2024-09-11 收藏 4KB MD 举报
在iOS开发中,调用系统的通讯录功能是一项常见的需求,尤其是在需要用户选择联系人或获取联系人信息的应用中。本文档提供了详细的步骤来实现这一功能,主要针对iOS 7及后续版本。 首先,我们需要导入必要的头文件。`#import<AddressBook/AddressBook.h>` 和 `#import<AddressBookUI/AddressBookUI.h>` 是用于与系统通讯录进行交互的关键,它们包含了与联系人数据模型、访问权限管理和用户界面相关的类和协议。 在iOS 7及以上版本,我们需要实现两个代理方法,以便在用户操作过程中得到相应的反馈。这两个代理方法是 `<ABPeoplePickerNavigationControllerDelegate>` 和 `<UINavigationControllerDelegate>`。前者负责处理用户在选择联系人时的行为,如取消操作;后者则是对导航控制器的通用代理,确保应用能够正确管理显示和隐藏控制器。 具体调用系统通讯录的方法是在一个名为 `getCate` 的函数中实现的。创建一个 `ABPeoplePickerNavigationController` 的实例 `pNC`,并将当前对象设置为它的代理。接下来,判断设备的系统版本是否大于等于8.0,因为在iOS 8及以后版本,为了保护用户隐私,需要设置一个默认的筛选条件,即 `[NSPredicate predicateWithValue:false]`,表示不进行任何筛选。然后,通过 `presentViewController:animated:completion:` 方法展示这个导航控制器。 在iOS 8及更高版本中,还需要实现一个额外的代理方法 `peoplePickerNavigationController:didSelectPerson:property:identifier:`,当用户选择了一个联系人后,这个方法会被调用,传递了所选联系人的记录引用、属性标识符等信息。在这个方法中,可以进一步处理用户的选择,例如获取或存储联系人数据。 调用系统通讯录在iOS开发中需要遵循苹果的框架和隐私政策,通过适当的代理方法来控制用户体验和数据获取。确保正确地导入所需的库,实现相应的代理协议,并根据系统版本调整策略,是成功集成此功能的关键。