首页 > 解决方案 > 为什么 TextField 不使用它的 lineLimit 去 SwiftUI 中的下一行?

问题描述

我有一个 TextField,它的 lineLimit 为 10,当 TextField 的文本长度大于它的框架时,它不使用下一行,而是像以前一样继续输入同一行,为什么 TextField 不使用它的 lineLimit?

import SwiftUI

struct ContentView: View {
    
    @State private var stringOfText: String = "Hello, world!"
    
    var body: some View {

        TextField("", text: $stringOfText)
            .frame(width: 300, height: 200, alignment: .top)
            .background(Color.yellow)
            .multilineTextAlignment(.leading)
            .lineLimit(10)

    }
}

在此处输入图像描述

标签: swiftui

解决方案


lineLimit是一个修饰符(更具体地说,它添加了一个环境属性)Text,而不是TextField. 从 SwiftUI 标题中lineLimit

行限制适用Text于层次结构中的所有实例。

TextField用于单行输入。SwiftUI 2.0 引入TextEditor了多行输入,默认情况下会换行。

来自 TextEditor 文档:

如果要更改文本的间距或字体缩放方面,可以使用 lineLimit( :)、lineSpacing( :) 和 minimumScaleFactor( :) 等修饰符来配置视图根据空间限制显示文本的方式。例如,这里的 lineSpacing( :) 修饰符将行间距设置为 5 点:

https://developer.apple.com/documentation/swiftui/texteditor


推荐阅读