我在学习Raywenderlich教程时遇到了问题。每次单击项目时,表单视图都会自动向上跳一点。这是虫子吗?有办法解决吗?代码在下面。在Contentview中,我使用一个GroupedListStyle()来列出所有项目。我的Xcode版本是11.2,SWIFT 5,干杯。https://i.stack.imgur.com/52VxC.gif
import SwiftUI
struct TaskEditingView: View {
@Binding var task: Task
var body: some View {
Form {
TextField("Name", text:$task.name)
Toggle("Completed", isOn: $task.completed)
}
}
}
struct TaskEditingView_Previews: PreviewProvider {
static var previews: some View {
TaskEditingView(task: .constant(Task(name: "TO DO")))
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你遇到的问题可能并不是一个Bug,而是一个在SwiftUI中已知的行为。当使用Form
视图时,它会自动调整以适应键盘的出现,确保输入框不会被键盘遮挡。这种行为对于提升用户体验是有益的,尤其是当用户需要在表单中填写信息时。
如果你不希望表单视图因为键盘的弹出而滚动,可以尝试以下方法来取消这一默认行为:
.ignoresSafeArea(.keyboard)
: 你可以尝试在你的TaskEditingView
的最外层添加.ignoresSafeArea(.keyboard)
来忽略键盘的安全区域影响。这将阻止视图因键盘弹出而滚动。修改代码如下:struct TaskEditingView: View {
@Binding var task: Task
var body: some View {
Form {
TextField("Name", text:$task.name)
Toggle("Completed", isOn: $task.completed)
}
.ignoresSafeArea(.keyboard) // 添加这一行来忽略键盘安全区域
}
}
请注意,直接忽略键盘安全区域可能会影响用户体验,尤其是在键盘遮挡了输入框的情况下。因此,在应用此更改前,请确保理解其对用户体验的影响,并考虑是否有其他方式可以优化布局以自然地适应键盘的出现,而不牺牲用户体验。