gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 21:26:09 25 4
gpt4 key购买 nike

我正在尝试创建一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com