簡體   English   中英

SwiftUI 文本字段代理綁定代碼忽略空格不起作用?

[英]SwiftUI textfield proxy binding code to ignore spaces not working?

我試圖讓我的 SwiftUI 文本字段輸入在每次按下空格鍵按鈕時忽略空格,以便帳戶輸入數據不包含任何空格。

我看到下面的代碼通過“代理綁定”實現這一點,但答案對我來說非常簡潔,而且我是 {get set} 的新手。

忽略 TextField SwiftUI Combine 中輸入的左側空格

如果新輸入是空格,我希望 AccountInput 中的代碼返回,這樣它就不會進入文本字段和 loginViewModel.input。

我怎樣才能使這段代碼工作?

主視圖

struct LoginView: View {
    @StateObject var loginViewModel = LoginViewModel()
    
    var body: some View {
        VStack {
            AccountInput(placeholder: "", input: $loginViewModel.input)
        }
    }
}

賬戶輸入

struct AccountInput: View {
    var placeholder: String
    @Binding var input: String
    
    var body: some View {
        HStack {
            TextField(placeholder, text: Binding(
                get: { self.input },
                set: {                      
                    var newValue = $0  
                    if newValue == " " { // How can I make new values return if a space?
                        return 
                    }
                    self.input = newValue
            }))
        }
    }
}

不,我們不應該返回,應該有分配,因為它會產生反饋。

它可以像

     TextField(placeholder, text: Binding(
        get: { self.input },
        set: {
            var newValue = $0
            newValue.removeAll { $0 == " " }  // << here !!
            self.input = newValue
    }))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM