CNContactView 控制器的取消按钮在输入时消失,然后重新出现

问题描述

我正在使用 SwiftUI,我使用的是一个 NavigationView,然后是一个 NavigationLink,它连接到 CNContactViewController 的 UIViewControllerRepresentable。

UIViewControllerRepresentable:

import SwiftUI
import ContactsUI

struct ContactView: UIViewControllerRepresentable {
    let contact: CNContact
    
    class Coordinator: NSObject,CNContactViewControllerDelegate {
        
        let contacts: Contacts
        
        init(contacts: Contacts) {
            self.contacts = contacts
        }
        
        func contactViewController(_ viewController: CNContactViewController,didCompleteWith contact: CNContact?) {
        }
    }
    
    init (_ contact: CNContact) {
        self.contact = contact
    }

    func makeUIViewController(context: Context) -> CNContactViewController {
        let controller = CNContactViewController(for: contact)
        controller.allowsEditing = true
        controller.contactStore = contacts.contactStore
        controller.message = ""
        controller.delegate = context.coordinator
        
        return controller
    }
    
    func makeCoordinator() -> Coordinator {
        return Coordinator(contacts: contacts)
    }

    
    func updateUIViewController(_ uiViewController: CNContactViewController,context: Context) {
        
    }
} 

导航链接

NavigationView {
   List {
      let contact = ... // get an existing contact from the contact store

      NavigationLink(destination: ContactView(contact)) {
         Text("Show Contact")
      }
   }
}

按钮消失并重新出现:

Button disappears and reappears

Here is a demo project on GitHub if you want to run it easily

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)