ios - SwiftUI 在自定义 TextField 上切换事件/非事件线条颜色

标签 ios swift swiftui textfield

我正在尝试创建一个 TextField 并在其下方添加一行,为此我使用了 this answer 中建议的 Divide 并在其中添加了一个 .onTapGesture() 以更改 Divider 颜色,但这是嵌入在另一个 View 中的组件。
在我的 ContentView 中,我有一个 Button 和我的 UnderscoredTextField ,它们包含在 HStack 中,并且它包含在 Background 组件(取自 this answer )中,以便能够以编程方式关闭键盘,但我希望能够更改 @State var isActive发生这种情况时 UnderscoredTextField 中的变量,但由于我是 SwiftUI 的新手,我不太确定如何实现这一点。

import SwiftUI

struct ContentView: View {
    var body: some View {
        Background {
            UnderscoredTextField(phoneNumber: "")
        }.onTapGesture {
            self.hideKeyboard()
            //How to tell my UnderscoreTextField's isActive variable to change
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
import SwiftUI

struct UnderscoredTextField: View {
    @State var phoneNumber: String
    @State var isActive: Bool = false
    
    var body: some View {
        VStack {
            TextField("12345678", text: $phoneNumber)
                .keyboardType(.phonePad)
                .onTapGesture {
                    self.isActive = true
            }
            Divider()
                .padding(.horizontal)
                .frame(height: 1)
                .background(isActive ? Color.red : Color.gray)
        }
    }
}

struct UnderscoredTextField_Previews: PreviewProvider {
    static var previews: some View {
        UnderscoredTextField(phoneNumber: "12345678")
    }
}
这是我隐藏键盘时的样子,但我想将其切换回灰色
enter image description here

最佳答案

如果我理解正确,使用 onEditingChanged 就足够了,如下所示

var body: some View {
    VStack {
        TextField("12345678", text: $phoneNumber, onEditingChanged: {
                self.isActive = $0     // << here !!
        }).keyboardType(.phonePad)
        Divider()
            .padding(.horizontal)
            .frame(height: 1)
            .background(isActive ? Color.red : Color.gray)
    }
}

关于ios - SwiftUI 在自定义 TextField 上切换事件/非事件线条颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63492364/

相关文章:

iphone - UITableView 自定义单元格不占用自定义单元格的高度

ios - 有什么功能知道我在 Swift 的 UITextView 中单击了键盘删除按钮

ios - 使用 Swift 获取网站数据

ios - Swift:初始化自定义 UITableViewCell 时获取 UITableView 框架

swift - SwiftUI 中的动画无法正常工作

SwiftUI 如何从另一个类访问 ContentView 变量

ios - 用于本地化目的的文本连接

ios - 如何调整 iOS 选择器轮以生成随机索引

ios - 快速移动多个物体

ios - Swift 以编程方式生成宽度百分比