Что я могу использовать вместо Text View в Swift UI? - PullRequest
0 голосов
/ 12 октября 2019

Мне бы хотелось иметь редактируемое текстовое поле с максимальным количеством символов, как в твите, но я не нашел решения в SwiftUI для этого. Кто-нибудь нашел решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Вам нужно TextField , вам нужно использовать модель данных, чтобы ограничить максимальное количество символов, как описано в в этом ответе .

0 голосов
/ 12 октября 2019

Я нашел ответ на ваш вопрос.

Это решение не использует EnvironmentObject.

Пожалуйста, проверьте эту страницу. Как использовать Combine в SwiftUI View

, это мой пример кода.

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()
    }
}
...