在可访问性模式下消除 NavigationLink 按钮形状
Eliminate NavigationLink button shape in accessibility mode
我有一个小的 SwiftUI 项目,在辅助功能模式下支持“按钮形状”。
但是我发现当我启用这个模式时,屏幕中央有一个白色的小矩形,我猜这是我为SecondView设置的NavigationLink。
这是我的代码:
struct FirstView: View {
@State private var activeSecondView = false
var body: some View {
NavigationView {
VStack {
Text("FirstView")
Button("Tap to show second view") {
self.activeSecondView = true
}
}
.overlay(NavigationLink(destination: Text("SecondView"), isActive: $activeSecondView) {EmptyView()})
}
}
}
运行起来是这样的(红色圈出多余的矩形):
有什么方法可以在“按钮形状”启用时消除或隐藏这个白色小矩形吗?
刚刚自己找到了解决方案,不确定这是否是最佳做法。无论如何,我会分享它,以防有人遇到类似问题。
只需将 NavigationLink 隐藏在主要内容后面,它就会变得不可见:
struct FirstView: View {
@State private var activeSecondView = false
var body: some View {
NavigationView {
ZStack {
NavigationLink(destination: Text("SecondView"), isActive: $activeSecondView) {EmptyView()}
Color.white
VStack {
Text("FirstView")
Button("Tap to show second view") {
self.activeSecondView = true
}
}
}
//.background(NavigationLink(destination: Text("SecondView"), isActive: $activeSecondView) {EmptyView()})
}
}
}
下一步试试(没测试只是想法)
.background(
NavigationLink(destination: Text("SecondView"), isActive: $activeSecondView)
{EmptyView()}.opacity(0) // << this !!
)
我有一个小的 SwiftUI 项目,在辅助功能模式下支持“按钮形状”。
但是我发现当我启用这个模式时,屏幕中央有一个白色的小矩形,我猜这是我为SecondView设置的NavigationLink。
这是我的代码:
struct FirstView: View {
@State private var activeSecondView = false
var body: some View {
NavigationView {
VStack {
Text("FirstView")
Button("Tap to show second view") {
self.activeSecondView = true
}
}
.overlay(NavigationLink(destination: Text("SecondView"), isActive: $activeSecondView) {EmptyView()})
}
}
}
运行起来是这样的(红色圈出多余的矩形):
有什么方法可以在“按钮形状”启用时消除或隐藏这个白色小矩形吗?
刚刚自己找到了解决方案,不确定这是否是最佳做法。无论如何,我会分享它,以防有人遇到类似问题。
只需将 NavigationLink 隐藏在主要内容后面,它就会变得不可见:
struct FirstView: View {
@State private var activeSecondView = false
var body: some View {
NavigationView {
ZStack {
NavigationLink(destination: Text("SecondView"), isActive: $activeSecondView) {EmptyView()}
Color.white
VStack {
Text("FirstView")
Button("Tap to show second view") {
self.activeSecondView = true
}
}
}
//.background(NavigationLink(destination: Text("SecondView"), isActive: $activeSecondView) {EmptyView()})
}
}
}
下一步试试(没测试只是想法)
.background(
NavigationLink(destination: Text("SecondView"), isActive: $activeSecondView)
{EmptyView()}.opacity(0) // << this !!
)