iOS Swift CNContactPickerViewController search contact and add to selection

后端 未结 4 1651
星月不相逢
星月不相逢 2020-12-31 04:02

I am using iOS 9 and Swift 2.2

I have implemented iOS inbuilt CNContactPickerViewController using CNContactPickerDelegate to get the cont

相关标签:
4条回答
  • 2020-12-31 04:49

    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.

    0 讨论(0)
  • 2020-12-31 04:57
    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)
        }
    
    0 讨论(0)
  • 2020-12-31 05:01

    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
            }
         }
      }
    }
    
    0 讨论(0)
  • 2020-12-31 05:04

    Multi selection and search are mutually exclusive. If you want search to be working you have to go with single selection only and implement only single selection delegate method.

    0 讨论(0)
提交回复
热议问题