swift - 如何为 Swift UI 添加字符的最大长度

标签 swift max limit swiftui cpu-word

您好,我正在创建一个待办事项应用程序,当用户在 UIText 字段中输入一些字符时,我遇到了一个问题,我记得 SWIFT 5 中有一种方法可以设置最大长度,但我在 SWIFT 中找不到UI 有人可以向我发送链接或逐步指导我如何将 SWIFT UI 项目的最大长度添加到文本字段!谢谢

我试图到处找到它,但找不到

结构NewTaskView: View { var taskStore:TaskStore

@Environment(\.presentationMode) var presentationMode


@State var text = ""
@State var priority: Task.Priority = .Низкий


var body: some View {
    Form {
        TextField("Название задания", text: $text)


        VStack {
            Text("Приоритет")
                .multilineTextAlignment(.center)
            Picker("Priority", selection: $priority.caseIndex) {
                ForEach(Task.Priority.allCases.indices) { priorityIndex in
                    Text(
                        Task.Priority.allCases[priorityIndex].rawValue
                        .capitalized
                    )
                    .tag(priorityIndex)
                }
            }
            .pickerStyle( SegmentedPickerStyle() )
        }

我想将最大长度放入文本字​​段,其中写入 TextField("Название задания", text: $text)

最佳答案

这似乎可以通过组合来实现,通过在文本周围创建一个包装器并打开 2 路订阅,其中文本订阅 TextField,TextField 订阅 ObservableObject。我想说,从 react 性的角度来看,它的工作方式非常合乎逻辑,但我希望找到一个不需要创建另一个对象的更干净的解决方案。

import SwiftUI
import Combine

class TextBindingManager: ObservableObject {
    @Published var text = "" {
        didSet {
            if text.count > characterLimit && oldValue.count <= characterLimit {
                text = oldValue
            }
        }
    }
    let characterLimit = 5
}

struct ContentView: View {
    @ObservedObject var textBindingManager = TextBindingManager()

    var body: some View {
        TextField("Placeholder", text: $textBindingManager.text)
    }
}

关于swift - 如何为 Swift UI 添加字符的最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58362170/

相关文章:

SQL Server : Finding Max Value in Result Set

javascript - 解析 javascript deleteAll() 只删除 20 个对象,即使我的限制是 1000?

mysql - 我们应该在下面的例子中使用 "LIMIT clause"吗?

JOIN-Query 中的 MySQL Bug LIMIT 更改记录中的值

ios - IBDesignable UI 未在带有 Swift 的 Xcode 9 中显示

ios - Xcode:持久性段错误:使用 Firebase 时为 11

mysql:获取具有最大列值的别名的元组

Swift + Firebase 在 didFinishLaunchingWithOptions 中预加载数据

ios - "NSInternalInconsistencyException [...] Sigh. Contentview size is zero."使用 UINavigationController 时崩溃

mysql - 需要帮助选择具有最大日期的行