【问题标题】:Tab works, but can't select TextFields using touch in iOs选项卡有效,但无法在 iO 中使用触摸选择文本字段
【发布时间】: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 功能引起的。

【问题讨论】:

标签: ios macos swiftui


【解决方案1】:

好的,这并不直观,但我已经解决了这个问题。据我所知,ContactPicker 和 VStack 的顺序很重要。通过将 ContactPicker 移动到视图顶部,问题已得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2018-09-21
    • 1970-01-01
    • 2017-08-31
    • 2011-07-19
    • 1970-01-01
    相关资源
    最近更新 更多