【问题标题】:CNContactPickerViewController - Cannot make any selectionCNContactPickerViewController - 无法进行任何选择
【发布时间】:2019-02-04 07:27:13
【问题描述】:

我使用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()

【问题讨论】:

    标签: swift cncontact cncontactpicker


    【解决方案1】:

    问题是我的代表超出了范围。问题不在我在我的 OP 中发布的课程中。我从UITableViewCell 中的IBAction 调用这个类,它超出了范围,因此这个类丢失了。将我的ContactsController 变量保存在调用类 的类级别,解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 2015-11-04
      • 2017-06-18
      相关资源
      最近更新 更多