0

我正在使用以下代码在 SwiftUI 应用程序中使用 UIViewControllerRepresentable 呈现 CNContactViewController:

import SwiftUI
import Contacts
import ContactsUI

    struct CNContactViewControllerRepresentable: UIViewControllerRepresentable {
    
    @Binding var contact: CNContact?
    @Binding var isActive: Bool
    
    @Environment(\.presentationMode) var presentationMode
    
    func makeUIViewController(context: Context) -> CNContactViewController {
        let viewController = CNContactViewController(forNewContact: contact)
        viewController.delegate = context.coordinator
        viewController.allowsEditing = false
        return viewController
    }
    
    func makeCoordinator() -> Coordinator {
        return Coordinator(vc: self)
    }
    
    func updateUIViewController(_ uiViewController: CNContactViewController, context: Context) {
        
    }
    
    class Coordinator: NSObject, CNContactViewControllerDelegate {
        
        var vc: CNContactViewControllerRepresentable
        
        init(vc: CNContactViewControllerRepresentable) {
            self.vc = vc
        }
        
        func contactViewController(_ viewController: CNContactViewController, didCompleteWith contact: CNContact?) {
            print("cancel")
            vc.presentationMode.wrappedValue.dismiss()
        }
    }

}

我遇到的问题是当联系人出现时,键盘在名称字段中的光标可见。我不希望此联系人可编辑。上面代码中的 viewController.allowsEditing = false 没有区别。

我也许可以忍受允许它是可编辑的,但我不希望一个字段最初是 firstResponder 。我想知道如何禁用编辑或确保未选择任何字段。

4

0 回答 0