[英]NavigationLink + Text.onTapGesture Colliding
這個問題是,當單擊 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。 這是一個例子:
有關解決此問題的最佳方法的任何想法?
我也遇到過類似的導航鏈接不穩定的問題。 我在處理導航鏈接方面取得了最大的成功,就好像它們不應該出現在列表中 go 並依靠 isActive 標志來觸發它們。
這是一個關於如何使用 isActive 的好教程:
https://www.hackingwithswift.com/articles/216/complete-guide-to-navigationview-in-swiftui
我懷疑將您的 navigationLinks 更改為按鈕,在您的視圖中創建一個 NavigationLink,並讓您的 onTapGesture 為游戲更改 state object 並為 isActive 更改 Bool 將起作用。 這是一個奇怪的范例,與 html 鏈接非常不同。
關鍵是
var body: some View {
@State var emojiView = false
NavigationLink(“”, destination: EmojiMemoryGameView(viewModel: game), isActive: self.$emojiView)
如果您更改 onTapGesture 中的 self.emojiView 和同一位置的游戲變量,它應該會將您導航到鏈接。 希望這是有道理的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.