NavigationLink работает только при долгом нажатии SwiftUI - PullRequest
1 голос
/ 17 апреля 2020

Почему-то кажется, что моя 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))
            }
        }
    }
}

Список заполнен правильно, но нажатие на него ничего не дает. Нажатие и удержание, а затем отпускание делает открытием правильного пункта назначения.

Кто-нибудь еще видел что-нибудь подобное? Это на Xcode 11.4.1 и iOS 13.4.1.

Редактировать:

См. Мой ответ ниже. В коде, который я разместил, проблем не было, я просто что-то оставил в своем SceneDelegate.

1 Ответ

0 голосов
/ 17 апреля 2020

Спасибо всем, кто помог, оказалось, что моя проблема заключалась в том, что я оставил onTapGesture в моем SceneDelegate, который должен был закрывать клавиатуру при наборе, но вместо этого удерживал мои NavigationLink от открытия. Упс.

Это выглядело немного похоже на случай, если кто-то тоже столкнется с этой проблемой:

// 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()
}
...