我有一个应用程序,我已经做了一段时间了,这是所有的SwiftUI,并运行在macOS,iOS和iPadOS。一个功能是简单的地址查找,允许用户在联系人应用程序中输入地址或进行搜索。问题是,虽然搜索很好,而且如果您有键盘,您可以点击选项卡并输入一个名字等等,在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功能引起的。
发布于 2021-12-19 21:34:58
好吧,这不是直觉,但我已经解决了这个问题。据我所知,ContactPicker和VStack的顺序很重要。通过将ContactPicker移动到视图的顶部,问题已经得到解决。
https://stackoverflow.com/questions/70240198
复制相似问题