我有以下导航链接:
Microsoft .NET Framework [3.5] [4] [4.5] [4.5.1] [4.5.2] [4.6] [4.6.1] [4.7.1] [4.7.2]
如果我留在“ .simultaneousGesture ...”中,则在Text元素上的点击不会触发NavigationLink操作,但是其余行仍然有效。
如果我删除.simultaneousGesture,则可以在任何地方再次点击该行。
臭虫?
答案 0 :(得分:2)
添加.simultaneousGesture(:)
调用是在NavigationLink
的标签上而不是在行本身上创建轻击手势识别器。有关手势识别器的两个事实解释了观察到的行为。
NavigationLink
的标签实际上位于列表/表格行的上方(参见图片)(请参见图片),这意味着它现在将在到达列表/表格行之前拦截所有点击。 / li>
因此,当您点击其中一个文本视图时,该点击由TapGesure.onEnded()
闭包处理。但是,当您点击中间的空格时,点击“通过”并由列表/表单行上的识别器处理,从而触发NavigationView
序列号。
因此,这是SwiftUI设计的决定,而不是错误。当前,List
/ Form
尚无法在保持导航功能的同时识别自定义手势。如果您有使用这种行为的用例,submit some feedback,也许我们明年就可以看到。
答案 1 :(得分:0)
谢谢您的解释。这说得通。它使我寻找触发电话的适当方法。
.onAppear(){ .... }
我试图在点击导航链接时模拟viewWillAppear类型的事件。我将onAppear放在vStack上,效果很好。