Je montre CNContactViewController
dans mon application en utilisant Peek et Pop, ça semble bien, mais aucune des actions ne fonctionne.CNContactViewController ne peut pas appeler ou envoyer un message (montrer en utilisant Peek et Pop ou UIViewControllerPreviewingDelegate)
Voici mon code. Création du contrôleur de vue:
func previewViewController() -> CNContactViewController {
let contactVC = CNContactViewController(for: theContact)
contactVC.allowsEditing = false
contactVC.allowsActions = true
contactVC.delegate = defaultContactVCDelegate
return contactVC
}
Mise en œuvre du UIViewControllerPreviewingDelegate
:
extension MyViewController: UIViewControllerPreviewingDelegate {
func previewingContext(_ previewingContext: UIViewControllerPreviewing,
viewControllerForLocation location: CGPoint) -> UIViewController? {
let preview = previewViewController()
let wrapper = UINavigationController(rootViewController: preview)
return wrapper
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing,
commit viewControllerToCommit: UIViewController)
{
guard let wrapper = viewControllerToCommit as? UINavigationController else { return }
guard let preview = wrapper.viewControllers.first else { return }
navigationController?.pushViewController(preview, animated: false)
}
}
Le CNContactViewControllerDelegate
:
class DefaultContactViewControllerDelegate: NSObject, CNContactViewControllerDelegate {
func contactViewController(_ viewController: CNContactViewController,
shouldPerformDefaultActionFor property: CNContactProperty) -> Bool {
return true
}
}
Je suppose que si ces actions sont présentes à l'écran (je veux dire des actions bas et le haut cercles), ils sont censés être touchables. Mais quand je les touche, rien ne se passe, comme si l'interaction de l'utilisateur était désactivée.