我正在使用以下代码在 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 。我想知道如何禁用编辑或确保未选择任何字段。