#swift #swiftui #accessibility #swiftui-navigationlink
Вопрос:
У меня есть небольшой проект SwiftUI, который поддерживает «Формы кнопок» в режиме специальных возможностей.
Но я обнаружил, что когда я включаю этот режим, в центре экрана появляется небольшой белый прямоугольник, который, я думаю, является навигационной ссылкой, которую я поставил для secondView.
Вот мой код:
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()}) } } }
И он работает так(избыточный прямоугольник обведен красным):
Есть ли какой-либо способ устранить или скрыть этот маленький белый прямоугольник, пока включена функция «Формы кнопок»?
Комментарии:
1. Попробуйте поместить ссылку в фоновый режим вместо наложения.
2. Я попробовал, но все равно не получилось.
Ответ №1:
Попробуйте следующий (не проверено, просто идея)
.background( NavigationLink(destination: Text("SecondView"), isActive: $activeSecondView) {EmptyView()}.opacity(0) // lt;lt; this !! )
Комментарии:
1. Ух ты, да это работает! И это проще, чем использовать ZStack. Спасибо!
Ответ №2:
Просто нашел решение сам, не уверен, что это лучшая практика. В любом случае я поделюсь им на случай, если кто-то столкнется с подобной проблемой.
просто спрячьте навигационную ссылку за основным контентом, и она станет невидимой:
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()}) } } }