首页 > 解决方案 > 使用 PageTabViewStyle 在 TabView 中正确禁用对 UIPageControl 的触摸

问题描述

我已经建立了一个(分页)TabView.tabViewStyle(PageTabViewStyle(indexDisplayMode: .always))

我希望 IndexView 只是可视的,即不响应任何触摸。

为了实现这一点,我设置UIPageControl.appearance().isUserInteractionEnabled = false了,它实际上禁用了触摸分页。

然而,触摸UIPageControl(通过设置它以蓝色突出显示backgroundColor)不会传递到List下面:点击蓝色区域不会选择List下面的行。

有没有办法做到这一点?

这是我的示例代码(在 iOS 14.0 beta 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)
        }
    }
}

标签: swiftuiuipagecontroltabview

解决方案


推荐阅读