您好,我正在创建一个待办事项应用程序,当用户在 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/