我CNContactPickerViewController
用来允许用户查看他们的联系人列表并选择一个联系人。但是,虽然我可以向他们显示他们的联系人列表,但无法选择任何联系人。我只是在寻找他们选择一个联系人。在姓名列表中没有选择器可以点击,如果您点击一个人,您会得到他们的联系人卡片。该屏幕上也没有任何内容可以让他们选择联系人。所以净,我可以向他们展示他们的联系人,但他们不能选择任何人。我在模拟器和实际设备上都试过了。
下面是我创建的用于处理应该是一个简单过程的类:
import Foundation
import ContactsUI
class ContactsController: NSObject, CNContactPickerDelegate {
private var parentController:UIViewController!
init(parentController:UIViewController) {
super.init()
self.parentController = parentController
openContactList()
}
private func openContactList() {
let picker = CNContactPickerViewController()
picker.delegate = self
picker.displayedPropertyKeys = [CNContactPhoneNumbersKey]
self.parentController.present(picker, animated: true)
}
func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
print("\(contact.givenName) \(contact.familyName): \(contact.phoneNumbers.first)")
}
}
作为更新,我实现了:
func contactPickerDidCancel(_ picker: CNContactPickerViewController) {
print("Canceled")
}
这个方法永远不会被调用。我的假设是委托有问题。顺便说一句,我确实将下面的实例化移动到了类级别,以防它超出范围。这没有帮助:
让选择器 = CNContactPickerViewController()