我按照此指南在 SwiftUI 中以编程方式创建导航。
现在的问题是,当 VoiceOver 打开时,VoiceOver 会将
NavigationLink
读出为 button
,尽管用户在视觉上完全看不到它。
我们如何阻止 VoiceOver 读出此内容
NavigationLink
?
struct ContentView: View {
@State private var isShowingDetailView = false
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Text("Second View"), isActive: $isShowingDetailView) { EmptyView() }
Button("Tap to show detail") {
isShowingDetailView = true
}
}
.navigationTitle("Navigation")
}
}
}
我假设您的目标是 iOS 15 或更低版本,因为在 iOS 16 中,您应该使用
navigationDestination(isPresented:destination:)
,这不会出现此问题。即使您的目标是 iOS 15,我仍然建议您使用 @available
检查 iOS 16。
accessibilityHidden
从辅助功能系统中完全隐藏元素。
NavigationLink(
destination: Text("Second View"),
isActive: $isShowingDetailView
) { EmptyView() }
.accessibilityHidden(true)