SwiftUI:在输入之前将 TextField 大小扩展到字体大小

Posted

技术标签:

【中文标题】SwiftUI:在输入之前将 TextField 大小扩展到字体大小【英文标题】:SwiftUI: Expanding TextField size to font size before input 【发布时间】:2019-08-14 08:06:55 【问题描述】:

我在使用 SwiftUI TextField 时遇到问题。光标和文本字段最初的大小非常小,在输入时它会增长到完整大小(在本例中为 .largeTitle)。我已将背景设为黑色,因此您可以看到实际字段发生了什么。有没有办法设置 TextField 的大小,使光标从与文本相同的大小开始?我已经尝试了文档中的所有功能,但没有成功...这是使用 Xcode 11 Beta 5。谢谢!

TextField("", text: input)
    .lineLimit(nil) // doesn't seem to work in Xcode 11 Beta 5
    .font(.largeTitle)
    .foregroundColor(.blue)
    .background(Color.black)

【问题讨论】:

【参考方案1】:

有一个错误,设置文本字段的样式无效,除非文本字段具有初始内容。让我们希望 beta 6 能解决这个问题。同时,这里有一个适合我的解决方法:

文本字段以一个值开头,但在 .onAppear 闭包中立即重置,因此您实际上看不到它:

struct ContentView: View 
    @State private var input = "x"

    var body: some View 
        TextField("", text: $input)
        .lineLimit(nil) // doesn't seem to work in Xcode 11 Beta 5
        .font(.largeTitle)
        .foregroundColor(.blue)
        .background(Color.black)
        .onAppear  self.input = "" 
    

【讨论】:

太棒了!我不知道这是一个 beta 错误还是预期的功能。感谢您的帮助,解决方法完美:) Xcode 11 GM 中仍未修复此问题。你有没有找到其他方法来解决这个问题?因为即使这个解决方案适用于第一个输入,如果你回到一个空的 TextField,错误再次出现...... 编辑:刚刚找到解决该问题的方法。在 TextField 占位符中添加空格可防止字段丢失其大小!不幸的是,您提供的修复仍然是必需的 占位符解决方法对我有用,但插入符号大小错误,您是否也找到了解决方法? 我在那里放了一个占位符,但在我输入任何内容之前光标仍然很小。有什么想法吗?

以上是关于SwiftUI:在输入之前将 TextField 大小扩展到字体大小的主要内容,如果未能解决你的问题,请参考以下文章

TextField 接受有限的字符 SwiftUi

SwiftUI - 如何在 TextField 上设置最大数量?

UIPickerView 作为 SwiftUI 中 TextField() 的输入

SwiftUI - 在 ForEach 中获取 TextField 数组

添加手势后SwiftUI TextField不起作用

SwiftUI如何让绑定到同一个状态的多个TextField呈现出不同输入行为