-2

我想要一个具有最大字符数限制的可编辑文本字段,就像一条推文一样,但我在 SwiftUI 中没有找到解决方案。有没有人找到解决这个问题的方法?

4

2 回答 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 回答