我在 Swift UI 中的 TextField 对点击和单击无响应,无法输入文本,代码有问题吗?

Posted

技术标签:

【中文标题】我在 Swift UI 中的 TextField 对点击和单击无响应,无法输入文本,代码有问题吗?【英文标题】:My TextField in Swift UI is Unresponsive to taps and clicks, text cannot be input, is there an issue with the code? 【发布时间】:2020-04-22 21:54:04 【问题描述】:

您好,我是一名中级工程师,拥有 swift 和 swift UI。

目前,我在使用 TextField() 时遇到问题,它对点击和点击没有响应,因此键盘不显示,

但是,当它是 VStack 中的两个主要元素之一时,它确实会显示出来,但除此之外,它不起作用,

代码有问题吗?任何人都可以找到解决方法或解决方法吗?

谢谢,迈尔斯



    @State var textField = ""

    var body: some View 

        returnJoinModalContent()

    

    func returnJoinModalContent() -> some View

        let accentColor = Color.blue

        return VStack(alignment: .center)
            HStack
                Text("Join Game")
                    .bold()
                    .font(.largeTitle)
                    .padding()
                Spacer()
                Button(action:
                    //self.hideModal()
                )
                Image(systemName: "xmark.circle.fill")
                    .resizable()
                    .frame(width: 50,height: 50)
                    .foregroundColor(accentColor)
                    .padding()
                
            
            .padding(.bottom,170)

            VStack(alignment: .leading)
                TextField("Enter Game Code",text: self.$textField)
                    .font(.largeTitle)

                Rectangle()
                    .frame(height: 6)
                    .foregroundColor(accentColor)
            
            .padding()
            HStack
                Button(action:
                    //self.joinGame()
                )
                    ZStack
                RoundedRectangle(cornerRadius: 90)
                    .frame(width: 200,height: 70)
                    .foregroundColor(accentColor)
                Text("Ready!")
                    .bold()
                    .font(.title)
                    .foregroundColor(Color.white)
                    
                
            
            .padding(.vertical,20)
            HStack
                Image(systemName: "info.circle")
                    .resizable()
                    .frame(width:60,height:60)
                    .foregroundColor(accentColor)

                Text("Ask your host for the game code, it can be found at the bottom of the player lobby")
                .padding()
                Spacer()

            
            .padding(.top,60)
            .padding(.horizontal,20)

            Spacer()
        
        .padding()
    





【问题讨论】:

FIX?:稍微增加文本字段的框架可以暂时解决问题,但是我仍然想知道上述错误是否有具体原因 【参考方案1】:

这似乎是 swiftUI 中难以追踪的事情之一。我发现问题出在您的就绪按钮上。更具体地说,标签是一个以彩色圆角矩形为背景的 ZStack。如果您将按钮的标签替换为以下内容,则您的文本字段应该是可选的。

Text("Ready!")
.bold()
.font(.title)
.foregroundColor(Color.white)
.frame(width: 200,height: 70)
.background(accentColor)
.mask(RoundedRectangle(cornerRadius: 90))

【讨论】:

问题解决了!!你知道为什么这会阻止文本字段被正确识别吗? 不,我不知道。这似乎只是一个奇怪的错误。【参考方案2】:

我发现TextField 上的overlayTextField 的容器可能会导致它无响应

你应该删除它并用ZStack替换它

【讨论】:

以上是关于我在 Swift UI 中的 TextField 对点击和单击无响应,无法输入文本,代码有问题吗?的主要内容,如果未能解决你的问题,请参考以下文章

Swift UI 在集合中绑定 TextField

当 React Material UI 中的 TextField 中存在值时自定义自动完成 CSS

从 Swift 中的 textField 获取 Webview URL

Swift:跳转到 CollectionView 中的下一个文本字段

逗号自动添加到 Swift 中的 TextField

Swift:无法让 UITextField 关闭键盘