CNContactPickerViewController
に番号が関連付けられていない連絡先を選択すると、この代理メソッドは呼び出されません。contactPickerDid CNContactPickerDelegateのキャンセルが一度も呼び出されていない
/*!
* @abstract Invoked when the picker is closed.
* @discussion The picker will be dismissed automatically after a contact or property is picked.
*/
optional public func contactPickerDidCancel(picker: CNContactPickerViewController)
番号を持つ連絡先を選択すると、それが呼び出されます。しかし、メソッドのドキュメンテーションから、何があっても呼び出されるべきだと思われます。
私の問題は、ユーザーが番号のない連絡先を選択した場合、UIAlertController
を提示する必要があることです。しかし、私はCNContactPickerViewController
が却下された後にしかこれを行うことができません。
viewDidAppear
でいくつかのロジックを使用すると本当にハッキーになるかもしれませんが、よりクリーンな方法が必要です。
ザ・唯一残っているデリゲートメソッドは、次のとおりです。CNContactPickerViewController
は、実際に画面を去ったときに決定するのに役立ちません
/*!
* @abstract Singular delegate methods.
* @discussion These delegate methods will be invoked when the user selects a single contact or property.
*/
optional public func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact)
optional public func contactPicker(picker: CNContactPickerViewController, didSelectContactProperty contactProperty: CNContactProperty)
/*!
* @abstract Plural delegate methods.
* @discussion These delegate methods will be invoked when the user is done selecting multiple contacts or properties.
* Implementing one of these methods will configure the picker for multi-selection.
*/
optional public func contactPicker(picker: CNContactPickerViewController, didSelectContacts contacts: [CNContact])
optional public func contactPicker(picker: CNContactPickerViewController, didSelectContactProperties contactProperties: [CNContactProperty])
。
(Xcode8/swift2.3/iOS10)
連絡先を選択すると、なぜ「contactPickerDidCancel」が呼び出されるのですか? – Adeel
@Adeel大きな質問、わからないがそれです。連絡先に関連付けられた番号がある場合に限ります。 – random