我在SwiftUI中有一个SecureField。当此字段成为焦点时(当用户点击它时),我想操纵@State属性,为SecureField应用偏移量修饰符。当SecureField失去焦点时,@ State属性应再次重置。我想这样做,以便在键盘被切换时可以看到SecureField。
我通过使用TextField的onEditingChanged参数实现了此功能,但是SecureField不存在此参数。
如何在SwiftUI中使用SecureField做到这一点?
如果TextField处于焦点状态,这将应用偏移:
height: auto !important
但是如何在SwiftUI中使用一个没有onEditingChanged参数的SecureField来实现相同的目的?
import SwiftUI
let lightGreyColor = Color(red: 239.0/255.0, green: 243.0/255.0, blue: 244.0/255.0, opacity: 1.0)
struct ContentView : View {
@State private var textFieldString: String = ""
@State private var editingMode: Bool = false
var body: some View {
VStack {
SecureField($textFieldString, placeholder: Text("My placeholder"))
}
.padding()
.background(lightGreyColor)
.cornerRadius(10.0)
.padding()
.offset(y: editingMode ? -150 : 0)
}
}
答案 0 :(得分:2)
SwiftUI
没有方法focused/unfocused
。您需要使用@state
和@observablle
和onTapGesture
来实现。但是,每次onTapGesture
被录音时,SecureField
都会调用。
SecureField($textFieldString, placeholder: Text("My placeholder"))
}
.onTapGesture {
//here apply condition
}
答案 1 :(得分:0)
您可以像以前一样继续使用UITextField,并切换其secureTextEntry
字段,而不使用SecureField组件。