SwiftUI: горизонтальный ScrollView внутри NavigationLink нарушает навигацию
Я хочу использовать простой горизонтальный
ScrollView
в виде
NavigationLink
внутри
List
. Однако, нажав на
ScrollView
не зарегистрирован
NavigationLink
и поэтому не выполняет навигацию к месту назначения.
NavigationView {
List {
NavigationLink(destination: Text("Detail")) {
ScrollView(.horizontal) {
Text("Tapping here does not navigate.")
}
}
}
}
Любые идеи о том, как мы можем предотвратить
ScrollView
от захвата жеста навигации?
2 ответа
Ты можешь двигаться
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.")
}
}
}
}