Я установил (подкачку) TabView
с .tabViewStyle(PageTabViewStyle(indexDisplayMode: .always))
.
Я хотел бы, чтобы IndexView был просто визуальным, т.е. не реагировал на любое прикосновение.
Чтобы для этого я установил UIPageControl.appearance().isUserInteractionEnabled = false
, что фактически отключает листание касанием.
Однако касания UIPageControl
(выделены синим цветом, установив его backgroundColor
) не передаются в List
ниже : нажатие на синюю область не приведет к выделению строки в List
внизу.
Есть ли способ добиться этого?
Вот мой пример кода (работает на iOS 14.0 бета 4):
struct ContentView: View {
init() {
UIPageControl.appearance().backgroundColor = UIColor(red: 0, green: 0, blue: 0.5, alpha: 0.5)
UIPageControl.appearance().isUserInteractionEnabled = false
}
var body: some View {
NavigationView {
TabView {
ForEach (0..<3, id: \.self) { page in
List {
ForEach (0..<30, id: \.self) { row in
NavigationLink(
destination: Text("Page \(page) Row \(row)"),
label: {
Text("Page \(page) Row \(row)")
})
}
}
.tag(page)
}
}
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .always))
.indexViewStyle(PageIndexViewStyle(backgroundDisplayMode: .always))
.navigationBarTitle("Title", displayMode: .inline)
.edgesIgnoringSafeArea(.bottom)
}
}
}