【发布时间】:2022-01-11 08:23:38
【问题描述】:
我有一个我已经开发了一段时间的应用程序,它全是 SwiftUI,可以在 macOS、iOS 和 iPadOS 上运行。一个功能是简单的地址查找,允许用户输入地址或在他们的联系人应用程序中进行搜索。问题是,虽然搜索工作正常,并且如果您有键盘,则可以按 Tab 键并输入名字等。在 SwiftUI 视图中的字段之间移动,您不能使用任何指针来选择视图中的任何字段.以下代码是 Swift 视图。
var body: some View {
NavigationView {
GeometryReader { geomtry in
VStack {
TextField("Address Line 1", text: $addressLine1)
.customTextField()
Spacer()
}
ContactPicker(showPicker: $showPicker, onSelectContact: {contact in
firstName = contact.givenName
lastName = contact.familyName
if contact.postalAddresses.count > 0 {
if let addressString = (
((contact.postalAddresses[0] as AnyObject).value(forKey: "labelValuePair")
as AnyObject).value(forKey: "value"))
as? CNPostalAddress {
// swiftlint:disable:next line_length
let mailAddress = CNPostalAddressFormatter.string(from: addressString, style: .mailingAddress)
addressLine1 = "\(addressString.street)"
}
}
self.showPicker.toggle()
}, onCancel: nil)
}
.padding([.leading, .trailing], 10 )
.navigationTitle("Recipient")
.navigationBarItems(trailing:
HStack {
Button(action: {
self.showPicker.toggle()
}, label: {
Image(systemName: "magnifyingglass")
})
}
)
}
}
` 我已经确认如果我禁用 ContactPicker 功能,屏幕允许我选择字段..所以它一定是由 ShowPicker 功能引起的。
【问题讨论】:
-
欢迎来到 SO - 请使用 tour 并阅读 How to Ask 以改进、编辑和格式化您的问题。如果没有Minimal Reproducible Example,就无法帮助您进行故障排除。
-
我一直在使用这里表示的代码 - @youjinp 创建的 stackoverflow.com/questions/57246685/…,上面的代码已被重构为最小代码。