gpt4 book ai didi

ios - contactPickerDidCancel 和 contactPicker 函数永远不会被调用

转载 作者:行者123 更新时间:2023-11-28 15:59:17 25 4
gpt4 key购买 nike

您好,我是 iOS 设计和 Swift 的新手,我正在尝试实现一个简单的联系人选择器,让用户可以简单地选择一个联系人。我在 View Controller 中有一个按钮,并且 View Controller 符合 CNContactPickerDelegate,但是当我运行应用程序并使用选择器时,无论我在选择器中按下什么,我的 contactPickerDidCancel 函数和我的 contactPicker 函数都不会被调用。据我了解,选择器应该在我单击而不是取消按钮或选择器内的联系人时调用我编写的函数。这是错误的吗?任何帮助或想法都会很棒!谢谢!

更新:已解决。这是一个简单的语法错误。在这两个函数中,我都没有在“picker”之前加下划线。

@IBAction func addContactPressed(_ sender: Any) {

let contactPickerViewController = CNContactPickerViewController()

contactPickerViewController.delegate = self

contactPickerViewController.predicateForEnablingContact = NSPredicate(format: "phoneNumbers.@count > 0", argumentArray: nil)

contactPickerViewController.predicateForSelectionOfProperty =
NSPredicate(format: "key == 'phoneNumbers'", argumentArray: nil)

contactPickerViewController.displayedPropertyKeys = [CNContactEmailAddressesKey, CNContactPhoneNumbersKey]

self.present(contactPickerViewController, animated: true, completion: nil)

}


func contactPickerDidCancel(picker: CNContactPickerViewController) {
print("Cancelled picking a contact.")
}

func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) {
print("Selected a contact.")
if contact.isKeyAvailable(CNContactPhoneNumbersKey) {
print(contact.phoneNumbers)
}
else {
print("No phone numbers are available.")
}
}

最佳答案

你必须用新的签名重写 CNContactPickerDelegate 方法:

func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
//handle contact
}

func contactPickerDidCancel(_ picker: CNContactPickerViewController) {
//handle cancel event
}

下划线 _ 将在新的 swift 语法中省略参数标签。所以使用新的签名。

关于ios - contactPickerDidCancel 和 contactPicker 函数永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41311318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com