在iOS 16之前,NavigationView
中的屏幕背景在SwiftUI中工作非常可靠。
在iOS 16中,使用屏幕键盘来回导航时会出现空白区域(无背景颜色):
再现代码:
import SwiftUI
struct ContentView: View {
@State private var text: String = ""
var body: some View {
NavigationView {
VStack {
TextField("Edit field", text: $text)
.textFieldStyle(RoundedBorderTextFieldStyle())
NavigationLink(destination: Text("Naviagtion target")) {
HStack {
Image(systemName: "link")
Text("Navigation Link")
}
}
.padding(30)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.gray)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
有什么办法解决这个问题吗?
1条答案
按热度按时间mec1mxoz1#
它看起来和感觉上确实像一个bug,当键盘出现时调整的安全区域不会在你导航回来时重新调整,键盘不在那里。
解决这个问题的一个方法是调整背景对安全区域的概念,告诉它总是回收键盘空间:
因为您只调整了背景的安全区域,所以视图的其余部分应该继续保持原来的行为。这意味着它仍然被提升以适应(缺失的)键盘的空间要求,但不太明显。