[英]Customized TextField not working in VStack in SwiftUI code
[英]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.