每次按下空格键时,我都试图使我的SwiftUI文本字段输入忽略spaces,以便帐户输入数据不包含任何空格.

我在下面看到了使用"代理绑定"实现这一点的代码,但答案对我来说非常简洁,我对{get set}是新手.

Ignore left whitespaces on imput in TextField SwiftUI Combine

如果新输入是space,我希望AccountInput中的代码为return,这样它就不会进入textfield&LoginView模型.输入

我怎样才能使这个代码工作?

MAIN VIEW

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

ACCOUNT 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
    }))

Ios相关问答推荐

我如何确保用户继续他们在应用程序中停止的地方?

更改文本在Flutter 中的位置

我应该使用哪个UIButton发送事件在SWIFT上刷卡?

使用SWIFT传输表示时的条件文件表示格式

设置托管在DigitalOcean上的iOS通用链接

IOS:在UI线程中执行代码的闭包样式的替代

如何在iOS 17中拦截UITextView中的链接点击?UITextItemInteraction已弃用

如果没有等待,SWIFT Async让任务抛出取消异常

SWIFT-仅解码感兴趣的元素

AVAudioRecord 没有音频

NavigationLink 只能在文本部分点击

RealityKit – ARView 光线投射返回 0 个结果

Swift/iOS:泛型错误:协议需要嵌套类型V;你想添加它吗?

更改图标会导致 SwiftUI 动画出现故障?

SwiftUI - ScrollView 不显示底部文本

如何找出坐标之间的距离?

通过touch 传递到下面的 UIViews

iOS 11 navigationItem.titleView 宽度未设置

在主线程上发布 NSNotification

SwiftUI 应用生命周期 iOS14 AppDelegate 代码放哪里?