Игнорировать левые пробелы при вводе в TextField SwiftUI Combine - PullRequest
0 голосов
/ 07 мая 2020

Я перехожу к опубликованной переменной TextField

TextField("First name", text: $state.firstName)

Я хочу управлять условными значениями: игнорировать пробелы, если они вводятся слева

Где и как это сделать?

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Можно сделать с привязкой прокси, как показано ниже

TextField("First name", text: Binding(
    get: { self.state.firstName },
    set: {
        var newValue = $0
        // fix newValue here as needed
        self.state.firstName = newValue
}))
0 голосов
/ 07 мая 2020

В свой ViewModel добавьте средство проверки, которое будет автоматически проверять каждое нажатие клавиши и исправлять пробелы в первом индексе.

import Foundation
import Combine

class ViewModel: ObservableObject {
    @Published var value: String = ""
    var previousAmount = 0.0
    var validStringChecker: AnyCancellable? = nil

    init() {
        validStringChecker = $value.sink { val in
            if val.first == " " {
                var newValue = val
                newValue.remove(at: newValue.firstIndex(of: " ")!)

                DispatchQueue.main.async {
                    self.value = newValue
                }
            }
        }
    }
}

Используйте TextField в своем ContentView, например:

import SwiftUI
import Foundation
import Combine


struct ContentView: View {
    @ObservedObject var viewModel = ViewModel()

    var body: some View {
        VStack {
            TextField("First Name", text: $viewModel.value)
                .textFieldStyle(RoundedBorderTextFieldStyle()).padding()
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...