忽略 TextField SwiftUI Combine 中输入的左侧空格
Posted
技术标签:
【中文标题】忽略 TextField SwiftUI Combine 中输入的左侧空格【英文标题】:Ignore left whitespaces on imput in TextField SwiftUI Combine 【发布时间】:2020-05-07 09:01:54 【问题描述】:我正在传递给 TextField 发布的变量
TextField("First name", text: $state.firstName)
我想控制插补:忽略空格,如果它是从左边输入的
我可以在哪里以及如何做?
【问题讨论】:
【参考方案1】:可以使用代理绑定,如下所示
TextField("First name", text: Binding(
get: self.state.firstName ,
set:
var newValue = $0
// fix newValue here as needed
self.state.firstName = newValue
))
【讨论】:
【参考方案2】:在您的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
在您的ContentView
中使用您的TextField
,例如:
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()
【讨论】:
以上是关于忽略 TextField SwiftUI Combine 中输入的左侧空格的主要内容,如果未能解决你的问题,请参考以下文章
使用 SwiftUI 中活动 TextField 中的值更新非活动 TextField
UIPickerView 作为 SwiftUI 中 TextField() 的输入
如何防止 TextField 在 SwiftUI 列表中消失?