如何解决SwiftUI:NavigationLink中的水平ScrollView中断导航
我想在ScrollView
中使用简单的水平NavigationLink
作为List
。但是,ScrollView
未注册对NavigationLink
的点击,因此不会导航到目的地。
NavigationView {
List {
NavigationLink(destination: Text("Detail")) {
ScrollView(.horizontal) {
Text("Tapping here does not navigate.")
}
}
}
}
关于如何防止ScrollView
捕获导航点击手势的任何想法?
解决方法
您可以将NavigationLink
移至background
并在onTapGesture
中将其激活:
struct ContentView: View {
@State var isLinkActive = false
var body: some View {
NavigationView {
List {
ScrollView(.horizontal) {
Text("Tapping here does not navigate.")
}
.onTapGesture {
isLinkActive = true
}
}
.background(
NavigationLink(destination: Text("Detail"),isActive: $isLinkActive) {}
)
}
}
}
,
最终目标尚不清楚,但以下替代方法也可以工作(已通过Xcode 12 / iOS 14测试)
NavigationView {
List {
ScrollView(.horizontal) {
NavigationLink(destination: Text("Detail")) {
Text("Tapping here does not navigate.")
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。