Ios CNContactViewController取消按钮不工作
我正在尝试使用内置的新联系人界面,但“取消”按钮出现意外行为。下面的代码起作用并调用新联系人屏幕,但“取消”按钮将仅清除屏幕条目,而不会从新联系人屏幕中取消。在内置联系人应用程序中,点击取消返回联系人列表屏幕。我想用“取消”按钮把窗户关上Ios CNContactViewController取消按钮不工作,ios,swift,Ios,Swift,我正在尝试使用内置的新联系人界面,但“取消”按钮出现意外行为。下面的代码起作用并调用新联系人屏幕,但“取消”按钮将仅清除屏幕条目,而不会从新联系人屏幕中取消。在内置联系人应用程序中,点击取消返回联系人列表屏幕。我想用“取消”按钮把窗户关上 @IBAction func newTwo(sender: AnyObject) { AppDelegate.getAppDelegate().requestForAccess { (accessGranted) -> Void in
@IBAction func newTwo(sender: AnyObject) {
AppDelegate.getAppDelegate().requestForAccess { (accessGranted) -> Void in
if accessGranted {
let npvc = CNContactViewController(forNewContact: nil)
npvc.delegate = self
self.navigationController?.pushViewController(npvc, animated: true)
}
}
}
您是否实现了CNContactViewControllerDelegate方法? 这是 例如:
func contactViewController(viewController: CNContactViewController, didCompleteWithContact contact: CNContact?) {
self.dismissViewControllerAnimated(true, completion: nil)
}
解除联系的更好方法是检查联系人是否为零,然后解除联系。如果从导航控制器推送视图控制器,则“取消”不起作用。您可能必须执行以下操作:
func contactViewController(viewController: CNContactViewController, didCompleteWithContact contact: CNContact?) {
if let contactCreated = contact
{
}
else
{
_ = self.navigationController?.popViewController(animated: true)
}
}
它使用以下代码为我工作: Swift 3
func contactViewController(_ vc: CNContactViewController, didCompleteWith con: CNContact?) {
vc.dismiss(animated: true)
}
我还改变了呼叫控制器的方式:
而不是:
self.navigationController?.pushViewController(contactViewController, animated: true)
解决办法是:
self.present(UINavigationController(rootViewController: contactViewController), animated:true)
我使用iOS 12中的示例代码找到了解决方案::取消按钮似乎“正常”工作,也就是说,点击它会丢弃数据并在屏幕上删除工作表。在iOS 13中:“取消”按钮似乎是“倒退”的,因为它只会取消一张空表。如果您在任何字段中键入了任何内容,则在您清除这些字段之前,它将不会关闭。(我使用引号是因为我不知道官方预期的行为)…而iOS13似乎是因为键盘没有自动关闭,这使得它覆盖了带有确认对话框的操作表。