设置固定高度时添加幻影填充

问题描述 投票:0回答:1

我在 SwiftUI 中有一个非常简单的

TextEditor
Form
,允许用户发送有关应用程序的反馈。

我想为文本字段设置

minHeight
maxHeight
,以便清楚用户可以输入多行。但是,我还想防止编辑器无限扩展并使其难以访问其他表单字段或提交按钮。

*问题:我面临的问题是,输入一段时间(或达到一定的输入长度)后,UI 开始出现意外行为 - 它开始在字段底部添加幻像空白(或填充)。在预览版、模拟器和真实设备上进行测试时会发生这种情况。

这是

TextEditor
的代码:

TextEditor(text: $description)
  .frame(minHeight: 200, maxHeight: 400)
  .disabled(processState.isRunning)
  .fixedSize(horizontal: false, vertical: true)
  .onChange(of: description) { _, newValue in
    if newValue.count > characterLimit {
      description = String(newValue.prefix(characterLimit))
    }
  }

我尝试过的:

  • 删除
    .onChange
    逻辑以排除该问题,但问题仍然存在。
  • 在不同平台(预览版、模拟器、设备)上进行了测试,但我看到了相同的行为。

有没有人在 SwiftUI 中遇到类似的 TextEditor 问题,或者对如何修复或排查此问题有建议?

Example issue Simulator recording

swift swiftui text-editor swiftui-texteditor
1个回答
0
投票

无法使用以下代码重现问题:

@main
struct TestSwiftUIApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

struct ContentView: View {
    @State var description = ""
    let characterLimit = 500
    
    var body: some View {
        TextEditor(text: $description)
          .frame(minHeight: 200, maxHeight: 400)
          .fixedSize(horizontal: false, vertical: true)
          .onChange(of: description) { n`ewValue in
              if newValue.count > characterLimit {
                  description = String(newValue.prefix(characterLimit))
              }
          }
          .padding(10)
    }
}

看起来您在这段代码之外遇到了问题。

在 MacOS 上检查。

© www.soinside.com 2019 - 2024. All rights reserved.