SwiftUI:如何在Form中实现多行TextField?
在SwiftUI Form中实现多行文本输入的解决方法
你遇到的问题是因为Form的默认单元格布局会垂直压缩TextField的高度,导致即使设置了axis: .vertical和lineLimit,输入框也没法正常展开。试试下面几种实用方法:
方法一:添加fixedSize限制
给TextField加上fixedSize(horizontal: false, vertical: true),让垂直方向不受Form单元格的压缩限制,根据行高自动调整:Form { // 其他表单元素 TextField("Notes", text: $notes, axis: .vertical) .lineLimit(5...10) .fixedSize(horizontal: false, vertical: true) }方法二:设置最小高度
直接给TextField设置minHeight,强制输入框保持最低高度,同时允许根据内容扩展:Form { // 其他表单元素 TextField("Notes", text: $notes, axis: .vertical) .lineLimit(5...10) .frame(minHeight: 100) // 可根据需求调整数值 }方法三:改用TextEditor(更灵活的多行输入)
如果需要更原生的多行输入体验,可以用TextEditor,但它没有默认占位符,需要自己实现:Form { // 其他表单元素 TextEditor(text: $notes) .frame(minHeight: 100) .overlay( Group { if notes.isEmpty { Text("Notes") .foregroundColor(.secondary) .padding(.horizontal, 8) .padding(.vertical, 12) } }, alignment: .topLeading ) }
内容的提问来源于stack exchange,提问作者JFS
相关产品推荐
相关产品推荐

