如何解决当键盘与通知一起出现时,视图与键盘有很大的分隔空间
我有这个代码。一旦键盘出现,包括 textedit 在内的一些视图就会消失,并且在键盘上方创建一个全新的空间。我想要的只是向上移动视图,以便我看到整个 textEdit 视图和所有视图,而没有在附加图像中标记为红色的整个空间。这是因为我添加了键盘通知,因为我想在没有键盘隐藏的情况下查看文本编辑的完整视图。如何在没有键盘隐藏的情况下显示视图。我当前使用 keyBoard 通知的解决方案在键盘上方创建了一个奇怪的间距。我在使用修饰符时附加了图像
struct ContentView: View {
@State var names = ["A","B","C","D"]
@State private var name: String = "Ban Ki Moon"
@State var placeholder: String = "Add Review"
@State var value: CGFloat = 0
init() {
UITextView.appearance().backgroundColor = .clear
}
var body: some View {
ZStack (alignment: .bottomLeading) {
List {
Section {
ForEach(names,id: \.self ) { name in
Group {
testStruct(name: name)
}
}.onDelete(perform: removeItems)
}
Section {
TextField("Enter your name",text: $name)
Text("Hello,\(name)!")
}
Section {
TextEditor(text: $placeholder)
.frame(height: 90 + 90)
.font(.body)
.foregroundColor(placeholder == "Add Review" ? .green : .gray)
.background(Color(UIColor.yellow))
}
}
}.offset(y: -self.value/2)
.animation(.spring())
.onAppear {
NotificationCenter.default.addobserver(forName: UIResponder.keyboardWillShowNotification,object: nil,queue: .main) {
(notification) in
let value = notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as! CGRect
let height = value.height
self.value = height
}
NotificationCenter.default.addobserver(forName: UIResponder.keyboardWillHideNotification,queue: .main) {
(notification) in
self.value = 0
}
}
}
private func removeItems (indexSet: IndexSet) {
names.remove(atOffsets: indexSet)
}
}
struct testStruct: View,Identifiable {
@State var name: String
let id = UUID()
var body: some View {
HStack {
Text(name)
Spacer()
Image(systemName: "folder.fill")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。