Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS Swift CNContactPickerViewController search contact and add to selection

I am using iOS 9 and Swift 2.2

I have implemented iOS inbuilt CNContactPickerViewController using CNContactPickerDelegate to get the contact numbers,

In the CNContactPickerViewController Screen, when I click on search field on top and search for a name, I need to add that name to my selection but nothing happens after tapping the contact.

I searched everywhere and dint find any solution to this

Do I need to add anything to my code or is it a iOS 9 bug

@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)
        }
    }
}
like image 990
Sujay U N Avatar asked Jul 01 '16 11:07

Sujay U N


1 Answers

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.

like image 53
bbjay Avatar answered Oct 05 '22 21:10

bbjay