Эта проблема заключается в том, что при нажатии на Text в представлении для NavigationLink onTapGesture получает приоритет и игнорирует NavigationLink. Я пробовал использовать simultaneousGesture
, но проблемы все еще возникают.
Вот бит кода NavigationView / List / NavigationLink:
NavigationView {
List {
ForEach(gameStore.games) { game in
NavigationLink(destination: EmojiMemoryGameView(viewModel: game)
.navigationBarTitle(self.gameStore.name(for: game))
) {
EmojiThemeEditorView(game: game, isEditing: self.editMode.isEditing)
}
}
.onDelete { indexSet in
indexSet.map { self.gameStore.games[$0] }
.forEach { game in
self.gameStore.removeGameTheme(game)
}
}
}
.navigationBarTitle(self.gameStore.name)
.navigationBarItems(
leading: Button(action: {
self.gameStore.addGameTheme()
}, label: {
Image(systemName: "plus").imageScale(.large)
}),
trailing: EditButton()
)
.environment(\.editMode, $editMode)
А вот тело EmojiThemeEditorView
:
var body: some View {
Text(game.theme.themeName).foregroundColor(game.theme.colorToUse).font(.largeTitle)
// .simultaneousGesture(TapGesture().onEnded { // tried this and did not work
.onTapGesture {
if (isEditing) {
self.showThemeEditor = true
}
}
.popover(isPresented: $showThemeEditor) {
EmojiThemeEditorOptionView(isShowing: $showThemeEditor).environmentObject(self.game.theme)
}
}
Как правило, нажатие на текст не приводит к переходу к NavigationLink. Вот пример:
Есть какие-нибудь мысли о том, как лучше всего решить эту проблему?