CNContactPickerViewController - Невозможно сделать выбор - PullRequest
0 голосов
/ 04 февраля 2019

Я использую 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 ()

1 Ответ

0 голосов
/ 04 февраля 2019

Проблема заключалась в том, что мой делегат выходил за рамки.Проблема была не в классе, который я разместил в своем ОП.Я вызывал этот класс из IBAction в UITableViewCell, который выходил из области видимости, поэтому этот класс был потерян.Удержание моей переменной ContactsController на уровне класса из вызывающего класса решило эту проблему.

...