【问题标题】:Selecting multiple contacts/contact properties in CNContactPicker在 CNContactPicker 中选择多个联系人/联系人属性
【发布时间】:2017-08-23 12:55:37
【问题描述】:

我正在使用此处定义的谓词: How can I pick a contact phone number in iOS?.

contactsPicker.predicateForEnablingContact = NSPredicate(format:"phoneNumbers.@count > 0")
contactsPicker.predicateForSelectionOfContact = NSPredicate(format: "phoneNumbers.@count == 1")
contactsPicker.displayedPropertyKeys = [CNContactPhoneNumbersKey]

我还定义了以下委托方法:

func contactPicker(_ picker: CNContactPickerViewController,
                   didSelect contactProperty: CNContactProperty) {
    print(contactProperty)
}

func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
    print(contact)
}

我期望的行为是用户可以从多个不同的联系人中选择电话号码属性,当用户单击完成时,我会得到这些属性和联系人的列表。

不幸的是,当用户点击完成时,上面的代码会立即退出选择器。这意味着用户不能选择多个电话号码和/或多个联系人,并且只能在选择器退出之前选择一个。

如何更改它以选择多个属性或联系人并在单击完成时提交?

【问题讨论】:

    标签: ios swift cncontactpicker


    【解决方案1】:

    为了选择多个联系人属性,您需要在您的委托中定义contactPicker:didSelectContactProperties:,而不是您在问题中提到的方法。

    希望这会有所帮助!

    Apple Documentation

    【讨论】:

      【解决方案2】:

      如果你想实现联系人的多选,那么你需要在你的视图控制器中实现CNContactPickerViewController的代理,即CNContactPickerDelegate,所以它会自动配置CNContactPickerViewController进行多选。

      - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact;
      - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty;
      

      如果你想让用户只选择一个联系人,那么你需要实现以下方法...

      - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContacts:(NSArray<CNContact*> *)contacts;
      - (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperties:(NSArray<CNContactProperty*> *)contactProperties;
      

      不要同时实现单选和多选委托方法。

      注意:实施其中一种方法会将选择器配置为多选。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-07
        • 1970-01-01
        • 2012-02-27
        • 1970-01-01
        • 1970-01-01
        • 2021-07-06
        • 2017-05-10
        相关资源
        最近更新 更多