You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI:如何阻止VoiceOver读出隐藏的NavigationLink为按钮

解决SwiftUI程序化导航中VoiceOver识别不可见NavigationLink的问题

你遇到的问题是:即使使用EmptyView()作为NavigationLink的标签,它依然会被VoiceOver识别为可交互按钮。要解决这个问题,只需给该NavigationLink添加accessibilityHidden(true)修饰符,让辅助技术直接忽略它即可。

修改后的代码如下:

struct ContentView: View {
    @State private var isShowingDetailView = false

    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: Text("Second View"), isActive: $isShowingDetailView) { 
                    EmptyView() 
                }
                .accessibilityHidden(true)

                Button("Tap to show detail") {
                    isShowingDetailView = true
                }
            }
            .navigationTitle("Navigation")
        }
    }
}

accessibilityHidden(true)的作用是明确告诉VoiceOver等辅助技术跳过该元素,既不会影响程序化导航的逻辑,也不会让VoiceOver读出这个不可见的按钮。

内容的提问来源于stack exchange,提问作者L N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:03:12