我正在尝试在SwiftUI中实现类似于UICollectionView
的View
,这基本上可以正常工作。但是,当我在滚动视图中滚动/拖动以向下滚动时,即使我只是想向下滚动,也可以在NavigationLink
上识别该轻敲,然后导航到详细视图。
任何想法可能是什么原因造成的?附加信息:整个NavigationView
是从另一个视图的.sheet
打开的(如您在屏幕截图中可能会注意到的)。我尝试通过在链接上设置tag
属性并在TapGesture
中设置标签来添加“手动”链接,但这也不起作用。
这里是一个可以重现错误的简短示例。向下滚动将激活对白色矩形之一的点击。
View before drag gesture on scroll view
View during drag gesture, tap is already recognized on NavigationLink
Navigation view pushes to detail view after drag gesture
var body: some View {
NavigationView {
ScrollView {
VStack {
ForEach(0..<6) { i in
NavigationLink(destination: Text("Detail")) {
Rectangle()
.background(Color.red)
.frame(width: 365, height: 100, alignment: .center)
}
}
}
}
.navigationViewStyle(StackNavigationViewStyle())
.navigationBarTitle("Items")
}
}
在预览(画布)和模拟器中的Xcode版本11.4(11E146)中已修复。