gpt4 book ai didi

ios - 取消按钮对 CNContactViewController 无效

转载 作者:可可西里 更新时间:2023-11-01 01:07:58 27 4
gpt4 key购买 nike

这不是 this question 的骗局或 this question因为这些答案没有用。

出于某种原因,在 UINavigationController 中呈现 CNContactViewController 时,取消按钮无效。

重现步骤:

  1. 复制这个 View Controller 。
  2. 点击取消按钮。

预期行为:

CNContactViewController 被关闭。

实际行为:

没有任何反应。永远不会调用委托(delegate)函数内的断点。

import Foundation
import Contacts
import ContactsUI


class ContactViewController: UIViewController, CNContactViewControllerDelegate {


override func viewDidLoad() {
super.viewDidLoad()

createContact()
}


func createContact() {
let contactController = CNContactViewController(forNewContact: nil)

contactController.delegate = self
contactController.allowsEditing = true
contactController.allowsActions = true
contactController.title = ""
contactController.view.layoutIfNeeded()

let contactNavController = UINavigationController(rootViewController: contactController)
contactNavController.navigationBar.backgroundColor = UIColor.red

present(contactNavController, animated:true)
}


// =============================================================================================================
// MARK: CNContactViewControllerDelegate Functions
// =============================================================================================================
func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) {
viewController.dismiss(animated: true, completion: nil)
dismiss(animated: true, completion: nil)
print("hi")
}


func contactViewController(_ viewController: CNContactViewController, shouldPerformDefaultActionFor property: CNContactProperty) -> Bool {
print("yo")
return true
}


// =============================================================================================================
// MARK: UIViewController Functions
// =============================================================================================================
override var prefersStatusBarHidden: Bool {
return true
}


override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}

最佳答案

我已经试过你的代码了;并取消按钮关闭 View Controller 没有问题。在我的案例中,问题是关于显示 View Controller ,它通过将 contactNavController 的现在更改为:

DispatchQueue.main.async {
self.present(contactNavController, animated:true)
}

试一下,可能是线程问题

关于ios - 取消按钮对 CNContactViewController 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53604922/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com