SwiftUI AccessibilityHidden 仍然可选择

SwiftUI AccessibilityHidden Still Selectable

处理与辅助功能相关的所有事情,发现 .accessibilityHidden(true) 似乎无法正常工作。即使 VO 没有读取任何内容,它仍然会在您在页面上滑动时显示白框。我解决这个问题的唯一方法是在整个东西周围放置一个 VStack 然后它似乎没问题,但是它会截断模拟器中的 welcomeBodyText 而不是在真实设备上,这令人担忧,因为我需要确保它有效在所有设备上。

由于HeaderNav只显示logo和公司名称,没有理由选择它,也没有在每个页面上读出,所以我想完全隐藏它不让VO看到,然后立即跳转到阅读welcomeHeaderText通过 welcomeBodyText。

HeaderNav.swift

import SwiftUI

struct HeaderNav: View {
    var body: some View {
        VStack {
            Spacer()
                .frame(minHeight: 26, idealHeight: 26, maxHeight: 26)
                .fixedSize()
            HStack(spacing: 16) {
                Spacer()
                Image(decorative: "LogoHeader")
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: 70)

                Text(LocalizationStrings.companyName)
                    .fontWeight(.light)
                    .foregroundColor(Color("WhiteText"))
                    .font(.system(size: 34))
                    .tracking(0.8)
                Spacer()
            } // End HStack
            .accessibilityElement(children: .ignore)
            .accessibilityLabel(LocalizationStrings.companyName)
        } // End VStack
    }
}

WelcomeTextView.swift

import SwiftUI

struct WelcomeTextView: View {
    var body: some View {
        Section {

            VStack { // This is what needed to be added to make it work but causes issues in the simulator
                HeaderNav()
                    .accessibilityHidden(true)

                VStack(spacing: 10) {
                    Group {
                        HeaderText(text: LocalizationStrings.welcomeHeaderText)
                        BodyText(text: LocalizationStrings.welcomeBodyText)
                    } // End Group (Page Description)
                    .pageDescr()

                } // End VStack
            } // End VStack to make it work
            .accessibilityElement(children: .combine)
        } // End Section
        .listRowBackground(Color("mainbkg"))
        .listRowSeparator(.hidden)
    }
}

pageDescr 是一个视图修改器,看起来像:

struct PageDescr: ViewModifier {
    func body(content: Content) -> some View {
        VStack(alignment: .leading, spacing: 20) {
            content
        }
        .padding(EdgeInsets(top: 5, leading: 32.0, bottom: 25, trailing: 32.0))
    }
}

这是导致问题的顶部填充,所以我在 VStack 的结束 } 上方的 HeaderNav 中使用了一个固定大小的垫片,并将顶部填充设置为 0。现在它起作用了。

像这样:

Spacer()
    .frame(minHeight: 32, idealHeight: 32, maxHeight: 32)
    .fixedSize()