iOS Swift CNContactPickerViewController search contact and add to selection iOS Swift CNContactPickerViewController search contact and add to selection ios ios

iOS Swift CNContactPickerViewController search contact and add to selection


The search results seem to be working in single selection mode only, so make sure you implement

func contactPicker(CNContactPickerViewController, didSelect: CNContact)

only, but not

func contactPicker(CNContactPickerViewController, didSelect: [CNContact])

If you implement both, the version wich takes only one CNContact as argument is ignored and the multi selection mode is used instead.


Use this updated code and     @IBAction func AddBtnKlkFnc(sender: AnyObject)    {        let contactPicker = CNContactPickerViewController()        contactPicker.delegate = self        contactPicker.displayedPropertyKeys =            [CNContactPhoneNumbersKey]        self.presentViewController(contactPicker, animated: true, completion: nil)    }    func contactPicker(picker: CNContactPickerViewController, didSelectContacts ContctAryVar: [CNContact])    {        for ContctVar in ContctAryVar        {            let ContctDtlVar = ContctDtlCls()            ContctDtlVar.ManNamVar = CNContactFormatter.stringFromContact(ContctVar, style: .FullName)!            for ContctNumVar: CNLabeledValue in ContctVar.phoneNumbers            {                var MobNumVar  = ((ContctNumVar.value as! CNPhoneNumber).valueForKey("digits") as? String)!                if(MobNumVar.Len() > 10)                {                    MobNumVar = MobNumVar.GetLstSubSrgFnc(10)                }                ContctDtlVar.MobNumVar = MobNumVar                ContctDtlAryVar.append(ContctDtlVar)            }        }     delegate.didFetchContacts([contact])    navigationController?.popViewControllerAnimated(true)    }


Here is a swift 4 version

@IBAction func addPhoneContact(_ sender: UIButton) {    let contactPicker = CNContactPickerViewController()    contactPicker.delegate = self    contactPicker.displayedPropertyKeys =        [CNContactPhoneNumbersKey]    self.present(contactPicker, animated: true, completion: nil)}extension ViewController: CNContactPickerDelegate {  func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {      picker.dismiss(animated: true, completion: nil)      let name = CNContactFormatter.string(from: contact, style: .fullName)      for number in contact.phoneNumbers {        let mobile = number.value.value(forKey: "digits") as? String        if (mobile?.count)! > 7 {            // your code goes here        }     }  }}