首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消按钮对CNContactViewController没有影响

取消按钮对CNContactViewController没有影响
EN

Stack Overflow用户
提问于 2018-12-04 02:38:44
回答 1查看 1K关注 0票数 2

这不是this questionthis question的欺骗,因为这些答案不起作用。

由于某些原因,当在CNContactViewController中显示UINavigationController时,取消按钮没有任何效果。

复制步骤:

  1. 复制此视图控制器。
  2. 点击取消按钮。

预期行为:

CNContactViewController被解职。

实际行为:

什么都没发生。委托函数中的断点永远不会被调用。

代码语言:javascript
复制
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()
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-12-04 05:10:26

我现在已经尝试过您的代码;并且没有问题地取消按钮,关闭视图控制器。在我的例子中,问题在于如何显示视图控制器,通过将contactNavController的存在更改为:

代码语言:javascript
复制
DispatchQueue.main.async {
            self.present(contactNavController, animated:true)
        }

试试看,也许你有线程问题

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53604922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档