Swift 文本输入方法TextEditor和TextField
Swift 文本输入方法TextEditor和TextField

Swift 文本输入方法TextEditor和TextField

在 SwiftUI 中,TextEditor 和 TextField 都用于文本输入,但它们有不同的用途和功能:

1、TextEditor

功能:适用于多行文本输入,类似于 UITextView。

外观:支持自动换行,可以显示较多的内容,非常适合用于编写长文本或备注。

用法:与字符串绑定,用于存储和实时更新用户输入。

特点

多行输入:支持用户输入长文本,可以自动换行。

可调节样式,但不像 TextField 那样有内置的占位符。

适合需要长文本输入的场景,例如撰写评论、文章、或描述内容。

@State private var notes = "Enter your notes here..."

var body: some View {
    TextEditor(text: $notes)
        .padding()
        .border(Color.gray, width: 1)
        .frame(height: 200)
}

2、TextField

功能:主要用于单行文本输入,类似于 UITextField。

外观:默认仅支持单行显示,适合较短的输入,例如用户名、密码等。

用法:与字符串绑定,用于实时保存和显示用户输入的短文本。

特点

单行输入:默认只显示一行文字,超过内容后需要滚动查看。

支持占位符文本,可以指示用户要输入的内容。

常用于表单字段,如名称、电子邮件等短文本输入。

@State private var name = ""

var body: some View {
    TextField("Enter your name", text: $name)
        .padding()
        .border(Color.gray, width: 1)
        .textFieldStyle(RoundedBorderTextFieldStyle())
}

在 iOS 16 及以上版本中,TextField 可以通过 axis: .vertical 来支持多行输入,从而缩小了与 TextEditor 的功能差距。

@State private var notes = ""

var body: some View {
    TextField("Enter your text", text: $notes, axis: .vertical)
        .padding()
        .border(Color.gray, width: 1)
}

在 TextField 中,axis 属性控制文本输入的轴方向。axis: .vertical 使 TextField 能够在文本内容超出一行时垂直扩展,而不是水平滚动。此属性让 TextField 能更像 TextEditor,适用于需要多行文本输入的情况,但依然保留了 TextField 的一些特性。

axis 的作用

水平滚动 (axis: .horizontal,默认):文本在一行中输入,内容超出后水平滚动。适合短文本。

垂直扩展 (axis: .vertical):允许 TextField 垂直扩展,适合稍长文本或需要的多行输入内容(尽管 TextField 不如 TextEditor 适合长文本)。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注