我想要一个具有最大字符数限制的可编辑文本字段,就像一条推文一样,但我在 SwiftUI 中没有找到解决方案。有没有人找到解决这个问题的方法?
问问题
158 次
2 回答
1
您需要的是TextField ,您必须使用数据模型来限制此答案中描述的最大字符数。
于 2019-10-12T13:50:16.747 回答
0
我找到了你问题的答案。
此解决方案不使用 EnvironmentObject。
请检查此页面。 如何在 SwiftUI 视图上使用组合
这是我的示例代码。
import SwiftUI
import Combine
struct ContentView: View {
@ObservedObject private var restrictInput = RestrictInput(5)
var body: some View {
Form {
TextField("input text", text: $restrictInput.text)
}
}
}
// https://stackoverflow.com/questions/57922766/how-to-use-combine-on-a-swiftui-view
class RestrictInput: ObservableObject {
@Published var text = ""
private var canc: AnyCancellable!
init (_ maxLength: Int) {
canc = $text
.debounce(for: 0.5, scheduler: DispatchQueue.main)
.map { String($0.prefix(maxLength)) }
.assign(to: \.text, on: self)
}
deinit {
canc.cancel()
}
}
于 2019-10-12T17:34:34.760 回答