【问题标题】:NavigationLink only works on long press SwiftUINavigationLink 仅适用于长按 SwiftUI
【发布时间】:2020-04-17 00:40:50
【问题描述】:

由于某种原因,我的 NavigationLink 似乎只能在长按时工作。这是视图的 sn-p:

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))
            }
        }
    }
}

列表已正确填充,但点击它们没有任何作用。按住然后松开打开正确的目的地。

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

【问题讨论】:

  • 如果您将 NavigationView 放在 VStack 之前,您会得到相同的行为吗?
  • 如果我将 VStack 放在 NavigationView 中,或者完全删除 VStack 包装器(我有点忘记它在那里),错误仍然存​​在。同样的代码也适用于以前版本的 Xcode,这很奇怪。
  • 您的代码看起来正确。如果评论navigationBarItems,行为是否相同?如果是,那么它似乎更新了 Xcode 缺陷。我还没有更新。

标签: ios swift swiftui navigationlink


【解决方案1】:

感谢所有提供帮助的人,事实证明我的问题是我在我的 SceneDelegate 中留下了一个 onTapGesture,它本应在打字时关闭键盘,但我的 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()
}

【讨论】:

    【解决方案2】:

    在我的例子中,我的自定义视图也有一个 onTapGesture。移除手势后,问题得到解决。

      CarouselContentView(data: eachItem)
            .frame( height: 200, alignment: .center).onTapGesture {   
            } <== Removed it
    

    【讨论】:

      猜你喜欢
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多