Я использую 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")
}
Этот метод никогда не вызывается.Я предполагаю, что с делегатом что-то не так. Кстати, я переместил создание экземпляров ниже на уровень класса на случай, если он выходит из области видимости.Это не помогло:
let picker = CNContactPickerViewController ()