开发者社区 问答 正文

Swiftui窗体视图跳起错误

我在学习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")))
    }
}

展开
收起
游客5akardh5cojhg 2019-12-09 13:43:42 442 分享 版权
阿里云 AI 助理回答

你遇到的问题可能并不是一个Bug,而是一个在SwiftUI中已知的行为。当使用Form视图时,它会自动调整以适应键盘的出现,确保输入框不会被键盘遮挡。这种行为对于提升用户体验是有益的,尤其是当用户需要在表单中填写信息时。

如果你不希望表单视图因为键盘的弹出而滚动,可以尝试以下方法来取消这一默认行为:

  1. 使用.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) // 添加这一行来忽略键盘安全区域
    }
}
  1. 自定义ScrollView的行为: 如果上述方法不适用或你需要更细粒度的控制,你可能需要手动管理ScrollView或者List的行为,比如通过监听键盘的出现和消失,然后手动调整内容的偏移量。但这通常涉及到更多的代码和状态管理。

请注意,直接忽略键盘安全区域可能会影响用户体验,尤其是在键盘遮挡了输入框的情况下。因此,在应用此更改前,请确保理解其对用户体验的影响,并考虑是否有其他方式可以优化布局以自然地适应键盘的出现,而不牺牲用户体验。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: