- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用更现代的 CNContactPickerViewController
来选择联系人。如果联系人有多个地址,我希望用户只能选择其中一个地址。如果专门选择了一个地址,我还想获得 CNContact
对象。
我可以使用已弃用的 ABPeoplePickerNavigationControllerDelegate
来执行此操作,其中此委托(delegate)函数可用:
func peoplePickerNavigationController(_ peoplePicker: ABPeoplePickerNavigationController, didSelectPerson person: ABRecord, property: ABPropertyID, identifier: ABMultiValueIdentifier)
但是,当使用 CNContactPickerViewController
时,只有这个相关的委托(delegate)函数可用:
func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty)
请注意,没有返回 CNContact
对象。我在 contactProperty 中获取了 CNPostalAddress
,但我没有收到所属联系人的记录。
这是我在 ABPeoplePickerNavigationController
中使用的代码:
let peoplePicker = ABPeoplePickerNavigationController()
peoplePicker.peoplePickerDelegate = self
peoplePicker.displayedProperties = [NSNumber(value: kABPersonAddressProperty as Int32), NSNumber(value: kABPersonBirthdayProperty as Int32)]
peoplePicker.predicateForSelectionOfPerson = NSPredicate(format: "postalAddresses.@count <= 1")
peoplePicker.modalPresentationStyle = UIModalPresentationStyle.currentContext
self.present(peoplePicker, animated: true, completion: nil)
...这是 CNContactPickerViewController 的代码:
let contactPicker = CNContactPickerViewController()
contactPicker.delegate = self
contactPicker.displayedPropertyKeys = [CNContactPostalAddressesKey, CNContactBirthdayKey]
contactPicker.predicateForSelectionOfContact = NSPredicate(format: "postalAddresses.@count <= 1")
contactPicker.modalPresentationStyle = UIModalPresentationStyle.currentContext
self.present(contactPicker, animated: true, completion: nil)
所以,对我来说,新的 Contacts Framework 中似乎不再提供相同的功能,但我正在检查这里是否遗漏了什么。
最佳答案
Note that there is no
CNContact
object returned. I get theCNPostalAddress
in the contactProperty, but I don't receive the record of the owning contact.
CNContact
对象可以从 CNContactProperty
的 contact
属性中获取,所以……
However, when using
CNContactPickerViewController
, only this relevant delegate function is available:func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProperty: CNContactProperty)
…实现这个委托(delegate)方法可以让你做你想做的事。但是您要确保您没有实现其他委托(delegate)方法,例如:
func contactPicker(CNContactPickerViewController, didSelect: CNContact)
这将在选择联系人(而不是其属性)时关闭选择器。
关于ios - 如何使用 CNContactPickerViewController 获取地址和联系人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628346/
我正在创建一个需要推荐的美食应用程序。我正在添加一项功能,允许我向联系人列表中的 friend 推荐特定食物。但是,在使用 CNContactViewController 时,我没有获得多重选择所需的
比方说,我们有一个简单的应用程序,其中包含一个 View Controller 和单个栏按钮项目,它将打开 CNContactPieckerViewController。因此,我进入选择器 View
我正在使用CNContactPickerViewController允许用户查看他们的联系人列表并选择联系人。但是,虽然我可以向他们显示他们的联系人列表,但无法选择任何联系人。我只想让他们选择一个联系
我正在显示一个CNContactPickerViewController。假设如果我从设置中禁用访问,则它不应该允许打开 Controller ,或者应该弹出窗口说“联系人访问已禁用”。但反过来它又打
委托(delegate)方法实现时: func contactPicker(_ picker: CNContactPickerViewController, didSelect contactProp
我正在使用 CNContactPickerViewController 让用户选择他/她的联系人之一的电子邮件 let contactPicker = CNContactPickerViewContr
我只想获取手机联系人的姓名和邮箱,打印出来。我正在使用以下代码来完成此任务。 import UIKit import ContactsUI class ViewController: UIViewCo
似乎无法创建与 CNContactPickerViewController 一起使用的 UIViewControllerRepresentable。 使用 Xcode 11 beta 4,我使用其他
有没有办法让弹出窗口显示联系人选择器? 我尝试了这个(以及许多其他变体)但没有结果......(这是我的 Controller 中的 IBAction 方法,当点击“sourceView”时应该显示弹
我有一个 ContactPicker,可以控制项目中其他 ViewController 的颜色,但无法控制 ContactsPickers状态栏颜色。 我的目标是让状态栏文本变成白色。 - (IBAc
我使用以下代码在我的应用程序中显示联系人列表: self.contactPicker = [[CNContactPickerViewController alloc] init]; s
我尝试使用一组现有电话号码从地址簿中过滤一些联系人。 CNContactPickerViewController 应该在这些联系人从现有电话号码中找到匹配的电话号码时禁止选择这些联系人。 我需要使用电
我正在尝试使用更现代的 CNContactPickerViewController 来选择联系人。如果联系人有多个地址,我希望用户只能选择其中一个地址。如果专门选择了一个地址,我还想获得 CNCont
我了解到 CNContactPickerViewController 中的搜索栏不允许选择搜索到的联系人。我还查看了有关此问题的其他堆栈溢出问题。这似乎是 iOS 错误。但我想知道,有什么方法可以隐藏
我正在打开一个 CNContactPickerViewController 以在应用程序中使用,但我想改变它的呈现方式以满足我的应用程序需求,最好不要自己动手并重新发明轮子。这就是我使用 Object
我正在使用 iOS 9 和 Swift 2.2 我已经使用 CNContactPickerDelegate 实现了 iOS 内置 CNContactPickerViewController 来获取联系
我使用新的 CNContactPickerViewController 从地址簿中选择联系人并在我的应用程序中使用它们。 当我按下按钮时,我调用此代码: let contactPicker = CNC
如果用户有多个电话号码,SelectionOfProperty 将不起作用。 我正在使用以下代码: let picker = CNContactPickerViewController() picke
我目前可以从联系人应用程序获取联系人,但我面临的问题是,如果联系人有超过 1 部手机,我需要能够选择要导入到我的应用程序的联系人数字,我总是得到第一个数字,这是我正在使用的代码: func conta
我正在编写一个概念聊天应用程序。我现在可以开始新的聊天了。 我想要的是,当用户使用 CNContactPickerViewController 选择一个联系人时,选择器被取消(这是有效的)并且联系人详
我是一名优秀的程序员,十分优秀!