NavigationLink 仅适用于长按 SwiftUI

Hay*_*ong 4 ios swift swiftui navigationlink

由于某种原因,我的 NavigationLink 似乎只在长按时起作用。这是视图的片段:

struct MainView: View {
    @EnvironmentObject var user: UserObservable
    var body: some View {
        VStack {
            NavigationView {
                List(user.items, id: \.self) { item in
                    NavigationLink(destination: ItemView(item: item)) {
                        Text(item.name)
                    }
                }
                .navigationBarTitle("\(user.displayName)'s items")
                .navigationBarItems(leading: AddItemViewButton().environmentObject(user),
                                    trailing: MainViewActionSheet().environmentObject(user))
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该列表已正确填充,但点击它们不会执行任何操作。按住然后松开确实打开正确的目的地。

还有其他人见过这样的事情吗?这是在 Xcode 11.4.1 和 iOS 13.4.1 上。

Hay*_*ong 7

感谢所有提供帮助的人,事实证明我的问题是我onTapGesture在我的键盘中留下了一个SceneDelegate应该在打字时关闭键盘的键盘,但却阻止了我的NavigationLinks 打开。哎呀。

它看起来有点像这样,以防有人也遇到这个问题:

// Use a UIHostingController as window root view controller.
if let windowScene = scene as? UIWindowScene {
    let window = UIWindow(windowScene: windowScene)
    window.rootViewController = UIHostingController(rootView: ContentView()
        .environmentObject(user)
        .onTapGesture { window.endEditing(true) }) // <- Problem right there
    self.window = window
    window.makeKeyAndVisible()
}
Run Code Online (Sandbox Code Playgroud)